文档章节

tomcat多应用之间如何共享jar

FuYung
 FuYung
发布于 2014/03/07 16:57
字数 360
阅读 5123
收藏 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
粉丝 13
博文 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
Java Web之Nginx+Tomcat+Memcached配置

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

YungFan
2017/11/10
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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
27分钟前
2
0
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部