在下面模块添加参数,因为是docker启动,所以与其他博客解决方法不一致

environment:

JAVA_OPTS : "-server -Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"

JAVA_OPTS,顾名思义,是用来设置JVM相关运行参数的变量。

JVM:JAVA_OPTS =“ - server -Xms2048m -Xmx2048m -Xss512k”

-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始堆大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:Java? heap最大值,使用-XX:PermSize:设置内存的永久保存区域-XX:MaxPermSize:最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。设置最大内存的永久保存区域-XX:MaxNewSize:-Xss 15120这使得JBoss每增加一个线程(线程)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k。+ XX:AggressiveHeap会使得Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完了一个G物理内存,再吃尽一个G的swap。-Xss:每个线程的Stack大小–verbose :gc现实垃圾收集信息-Xloggc:gc.log指定垃圾收集日志文件-Xmn:young generation的堆大小,一般设置为Xmx的3,4分之一-XX:+ UseParNewGC:缩短minor收集的时间-XX:+ UseConcMarkSweepGC:缩短主要收集的时间提示:此选项在堆大小比较大而且主要收集时间较长的情况下使用更合适。

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError:PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被加载的时候被放入PermGen空间区域,它和和存放实例的堆区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen空间进行清理,所以如果改变方法:-Xms256m -Xmx256m -XX:MaxNewSize = 256m -XX:MaxPermSize = 256m -XX:MaxPermSize = 256m -XX:MaxPermSize = 256m 2,在tomcat中重新部署时出现outofmemory的错误。可以有以下几个方面的原因:
1,使用了proxool,因为proxool内部包含了一个老版本的cglib。
2,log4j,最好不用,只用common-logging
3,老版本的cglib,快点更新到最新版本
。4,更新到最新的hibernate3.2 3,
 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐