当前位置: 代码迷 >> Web前端 >> WebLogic10内存储器溢出及设置虚拟内存方法
  详细解决方案

WebLogic10内存储器溢出及设置虚拟内存方法

热度:505   发布时间:2012-12-16 12:02:32.0
WebLogic10内存溢出及设置虚拟内存方法

调整weblogic虚拟内存暂时我知道的有两种方法:

?

?

第一种:

改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

更改的方式如下:

F:\bea\user_projects\domains\base_domain\bin 对文件:startWeblogic.cmd中增加:

?


@REM ----------------------------------

@REM

@REM Reset the memory configuration (2011-03-29)

@REM

@REM ----------------------------------

set MEM_ARGS=-Xms1024m -Xmx1024m -XX:MaxPermSize=512m

?


?

?

如若采用的是eclipse product模式,weblogic server在elipse中启动的话,还要修改eclipse中的配置:

进到eclipse中的eclipse.ini中,修改如下:

--launcher.XXMaxPermSize
512m
-vmargs
-Xms2048m
-Xmx2048m

与weblogic中startWeblogic修改的配置一样。

?

?

第二种:

更改的方式如下:

F:\bea\user_projects\domains\base_domain\bin 对文件:setDomainEnv.cmd中配置:

MEM_ARGS="-Xms32m -Xmx200m -XX:MaxPermSize=128m"

  -Xms:内存初始值

  -Xmx:内存最大值(不要超过内存的80%)

  MaxPermSize:PermGen(Class和Meta存放区域)区域内存最大值。

  可调整为:

  MEM_ARGS="-Xms512m -Xmx512m -XX:MaxPermSize=256m"

?? -XX:MaxPermSize改为256或512

?

?

下面这一段是关于对第一种方法另一种配置解释:

对 JRockit JVM优化

????

???? Task

? Options

?Comments

?Setting the Nursery

?-Xns

尽力使Nursery最够大,来减少GC停顿时间。最大最好不要超过最大Heap 95%

?Setting minimum heap size

?-Xms

?
BEA
推荐这个值最好等于最大的heap

?Setting maximum heap size

?-Xmx

?
Heap
最大值,当然越大越好。

?Setting garbage collection

?-Xgc: parallel

?

?Performs adaptive optimizations as early as possible in the Java application run.

?-XXaggressive:memory

?


??

?

?

对 SUN? JVM优化

?

? Task

?Options

?Comments

?Setting the New generation heap size

?-XX:NewSize


默认 NewSize大小是Heap的四分之一,类似Nursery,尽量设置大点减少GC停顿时间。

?Setting the maximum New generation heap size

?-XX:MaxNewSize

?设置 New Generation heap 最大值.

?Setting New heap size ratios

?-XX:SurvivorRatio

Sun generation分为3个区域,一个Edgn和两个survivors。该值是设置EdgnSurviors的比例。最好设置为8.

?Setting minimum heap size

?-Xms

?推荐这个值最好等于最大的heap

?Setting Big Heaps and Intimate Shared Memory

?-XX:+UseISM -XX:+AggressiveHeap

?See http://java.sun.com/docs/hotspot/ism.html

?Setting maximum heap size

?-Xmx

?Heap最大值,当然越大越好。


?

?

?

?直接修改user_projectsdomainsbase_domainbin下的startWebLogic.cmd文件,找到:

Java代码

1.??? @REM JAVA_OPTIONS?? - Java command-line options for running the server. (These??

2.??? @REM????????????????? will be tagged on to the end of the JAVA_VM and??

3.??? @REM????????????????? MEM_ARGS)??

@REM JAVA_OPTIONS - Java command-line options for running the server. (These @REM will be tagged on to the end of the JAVA_VM and @REM MEM_ARGS)

?

在后面追加以下代码,启动配置信息即可生效。

$ java -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -Xms512m -Xmx512m

?

内存溢出的原因:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存溢出,解决方法也一定是加大内存。说说为什么会内存溢出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

?

?

?

除了设置参数时,最最重要的是在创建domains时选择JDK时应该选择bea的JRocke,不要选择sun的JDK(sun JDK的垃圾回收机制被占用,无法回收),所以为了不当机,最好选择bea的。