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的。

猜你喜欢

转载自rcfeng.iteye.com/blog/1742482