JVM常用参数设置

昨天再给生产环境的weblogic打补丁时遇到以下错误:
打补丁命令:

./bsu.sh -install -patch_download_dir=/home/lip/Oracle/Middleware/utils/bsu/cache_dir -patchlist=FMJJ -prod_dir=/home/lip/Oracle/Middleware/wlserver_10.3
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.HashMap.newNode(HashMap.java:1734)
    at java.util.HashMap.putVal(HashMap.java:630)
    at java.util.HashMap.put(HashMap.java:611)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.loadPropertyMap(XBeanDataHandler.java:778)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.<init>(XBeanDataHandler.java:99)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.createDataHandler(XBeanDataHandler.java:559)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.getComplexValue(XBeanDataHandler.java:455)
    at com.bea.plateng.patch.dao.cat.PatchCatalogHelper.getPatchDependencies(PatchCatalogHelper.java:442)
    at com.bea.plateng.patch.dao.cat.PatchCatalogHelper.getPatchDependencies(PatchCatalogHelper.java:464)
    at com.bea.plateng.patch.dao.cat.PatchCatalog.getPatchDependencies(PatchCatalog.java:56)
    at com.bea.plateng.patch.dao.cat.PatchCatalogHelper.getInvalidatedPatchMap(PatchCatalogHelper.java:1621)
    at com.bea.plateng.patch.PatchSystem.updatePatchCatalog(PatchSystem.java:436)
    at com.bea.plateng.patch.PatchSystem.refresh(PatchSystem.java:130)
    at com.bea.plateng.patch.PatchSystem.<init>(PatchSystem.java:114)
    at com.bea.plateng.patch.PatchSystem.<clinit>(PatchSystem.java:41)
    at com.bea.plateng.patch.Patch.main(Patch.java:279)

查看错误信息,是内存不足导致,于是修改bsu.sh文件中的内存配置:

原值:MEM_ARGS="-Xms256m -Xmx512m"
修改后:MEM_ARGS="-Xms512m -Xmx1024m"

修改之后,又出现以下错误:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.Arrays.copyOfRange(Arrays.java:3664)
    at java.lang.String.<init>(String.java:207)
    at java.lang.StringBuilder.toString(StringBuilder.java:407)
    at java.lang.Class.argumentTypesToString(Class.java:3156)
    at java.lang.Class.getMethod(Class.java:1786)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.isValueSet(XBeanDataHandler.java:958)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.getValueFromObject(XBeanDataHandler.java:589)
    at com.bea.cie.common.dao.xbean.XBeanDataHandler.getSimpleValue(XBeanDataHandler.java:431)
    at com.bea.plateng.patch.dao.cat.PatchDependency.getRule(PatchDependency.java:48)
    at com.bea.plateng.patch.dao.cat.PatchCatalogHelper.getInvalidatedPatchMap(PatchCatalogHelper.java:1625)
    at com.bea.plateng.patch.PatchSystem.updatePatchCatalog(PatchSystem.java:436)
    at com.bea.plateng.patch.PatchSystem.refresh(PatchSystem.java:130)
    at com.bea.plateng.patch.PatchSystem.setCacheDir(PatchSystem.java:201)
    at com.bea.plateng.patch.Patch.main(Patch.java:281)

继续扩大Xmx内存,配置修改为:

MEM_ARGS="-Xms512m -Xmx1536m"

然后就没有问题了。

查阅网上资料,记录总结一下,遇到以下几种问题的解决方案:

一、

java.lang.OutOfMemoryError: Java heap space。

解决方案:增加堆内存 -Xmx2048m
原因:堆内存不足。你正准备创建一个新的对象,但是这个要创建的对象需要的内存已经超过了虚拟机所剩的了。虚拟机会尝试通过full GC来回收内存,如果不行的话,就会抛出这个信息。

二、

java.lang.OutOfMemoryError: PermGen space

解决方案:增加持久代内存 -XX:MaxPermSize=256m
原因:这个和第一个现象差不多,不过这里准备分配内存的空间是持久代。同样的,你的空间已经不够了,所以虚拟机善意的提醒了你一下。

三、

java.lang.OutOfMemoryError: GC overhead limit exceeded

解决方案:把-XX:-UseGCOverheadLimit加到启动脚本里
原因:这个问题有点特殊。这里没有提示说堆还是持久代有问题,虚拟机只是告诉你你的程序花在垃圾回收上的时间太多了,却没有什么见效。默认的话,如果你98%的时间都花在GC上并且回收了才不到2%的空间的话,虚拟机才会抛这个异常。

更多错误解决办法,参考:http://hugnew.com/?p=404
Eclipse中配置JVM学习参考:http://blog.csdn.net/mr__fang/article/details/47723767



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值