文档章节

tomcat多应用之间如何共享jar

FuYung
 FuYung
发布于 2014/03/07 16:57
字数 360
阅读 5081
收藏 19

         在上一篇博客中介绍了如何在一个tomcat中创建多个应用,但是往往在项目中会包含很多相同的jar包,这样,tomcat加载多个项目的时候会经常出现java.lang.OutOfMemoryError: PermGen space内存溢出的异常。

         PermGen space到底是什么异常呢?

         permGen space的全称是Permanent Generation space (内存永久保存区域)   ,从表面看这个问题就是内存溢出了,解决方案就是加大服务器的内存。但是为什么会出现内存溢出呢?class在被类加载器loader的时候会放入到permGen space这个区域,他和存放InstanceHeap区域不同,Garbage Collection 不会在主程序运行期间对这个区域进行清理,所以如果我们的应用中有很多class被加载到这个区域时,就可能会出现java.lang.OutOfMemoryError: PermGen space内存溢出的异常了。

    如何解决?

tomcat容器为例。

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

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重复加载占用空间内存了。


© 著作权归作者所有

共有 人打赏支持
FuYung
粉丝 12
博文 24
码字总数 15729
作品 0
深圳
后端工程师
加载中

评论(1)

尚睿软件
尚睿软件
在配置了shared.loader,如果原来项目WEB-INF里的jar不删掉,会重复加载占用内存吗?
理解Tomcat的Classpath-常见问题以及如何解决

在很多Apache Tomcat用户论坛,一个问题经常被提出,那就是如何配置Tomcat的classpath,使得一个web应用程序能够找到类或者jar文件,从而可 以正常工作。就像许多困扰Tomcat新用户的问题一样...

大东哥
2012/06/28
0
3
Tomcat下多项目jar包共享配置

在Tomcat下设置多项目jar共享常见的有两种方法。这两种方法的共同点是修改tomcat下conf目录中的catalina.properties文件。 第一种方法:修改catalina.properties中的common.loader属性。在c...

chace0120
2014/06/01
0
0
nginx-tomcat负载均衡redis-session共享,静态资源分离

nginx-tomcat负载均衡redis-session共享,静态资源分离 基本环境: redis-2.8 Apache-tomcat-6.0.41 nginx1.6.2 1,redis配置 1,配置redis访问密码 到redis的目录下找的redis.conf,解开req...

steven
2016/07/29
37
0
基于MSM实现nginx负载均衡+tomcat集群+memcached(session共享)

Session共享的方案介绍 Session 共享有多种解决方法,常用的有四种:客户端 Cookie 保存、服务器间 Session 同步、使用集群管理 Session(如本文要介绍的Memcached Session Manager) 、把 ...

jaychang
2016/01/20
4.1K
7
Java Web之Nginx+Tomcat+Memcached配置

1、配置多个Tomcat 复制本机上的Tomcat,分别为,表示三个Web服务器,如下图所所示: 三个tomcat.PNG 然后修改三个Tomcat的配置文件,修改它们的端口分别如下表所示: 取值 Server Connector...

YungFan
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
13分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
30分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
37分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
44分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部