tomcat多應用之間如何共享jar

         在上一篇博客中介紹瞭如何在一個tomcat中建立多個應用,可是每每在項目中會包含不少相同的jar包,這樣,tomcat加載多個項目的時候會常常出現java.lang.OutOfMemoryError: PermGen space內存溢出的異常。java

         PermGen space究竟是什麼異常呢?vim

         permGen space的全稱是Permanent Generation space (內存永久保存區域)   ,從表面看這個問題就是內存溢出了,解決方案就是加大服務器的內存。可是爲何會出現內存溢出呢?class在被類加載器loader的時候會放入到permGen space這個區域,他和存放InstanceHeap區域不一樣,Garbage Collection 不會在主程序運行期間對這個區域進行清理,因此若是咱們的應用中有不少class被加載到這個區域時,就可能會出現java.lang.OutOfMemoryError: PermGen space內存溢出的異常了。tomcat

    如何解決?服務器

tomcat容器爲例。spa

1、手動設置MaxPermSize的大小,vim ${ TOMCAT_HOME }/bin/catalina.sh,找到echo "Using CATALINA_BASE:   $CATALINA_BASE",在此之上加入:JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128mserver

2、將多應用之間的相同的jar分離出來,放置${ TOMCAT_HOME }/shared/lib目錄下,修改${ TOMCAT_HOME }/conf/catalina.properties文件中shared.loader=${catalina.base}/shared/lib,${catalina.base}/shared/lib/*.jar內存

也能夠將公用的jar所有放置${ TOMCAT_HOME }/lib包下。博客

這樣子就能夠減小jar重複加載佔用空間內存了。io

相關文章
相關標籤/搜索