weblogic12c 设置jvm大小_转:weblogic怎么去设置jvm heap大小

找到安装目录下的weblogic81\common\bin\commEnv.cmd文件,打开修改如下代码:

sun

if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode

set JAVA_VM=-client

set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m

set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none

goto continue

:sun_prod_mode

set JAVA_VM=-server

set MEM_ARGS=-Xms768m -Xmx1024m -XX:MaxPermSize=256m

goto continue

一般在文件中,有二处这样的代码存在,一个是使用weblogic自带的jrockit JDK,二是使用sun的JDK.这里是以sun JDK为例.

通过修过二处的=-Xms768m -Xmx1024m 可以达到修改JVM目的所在.修改后保存重启即可.

MaxPermSize=256m的介绍:

一般情况下,在分析服务器挂起问题、原因不明的超时或其它引起混乱的不明行为过程中会发现丢失线程问题。在缺省的 WebLogic Server 配置中,Default 队列应当有 15 个执行线程(0 到 14)。下面是一个 Thread Dump 摘录,显示“Default”队列的 ExecuteThread 13、8、6、5 和 3 丢失。在指示线程已经终结的服务器日志记录中没有任何异常、堆栈跟踪或通知。

为什么发生此问题?

线程在抛出未捕获的异常或错误时可能会消失。这种情况会导致服务器挂起,因为其它线程可能在永远不会调用 notify() 的监视器上等待(即,要调用 notify() 的线程已经消失了)。

如果设置 MaxPermSize 能够纠正此问题,有一种可能的解释是 OutOfMemoryException 在某些时候因为没有足够的 MaxPermSize 设置而被抛出。如果线程正在记录此异常,同时又发生另一个异常(例如,另一个 OutOfMemoryException),则线程将不发出任何通知就结束。一直等待该线程调用 notify() 的其它线程将挂起。

如果设置 MaxPermSize 无法纠正此问题,则原因很可能是应用程序异常处理出现问题。您应当利用调试器执行代码审核或分析应用程序,以确定问题是否由未捕获的异常或错误引起的。“Hey, where'd my thread go?”一文解释了未捕获的异常和/或错误可能造成线程消失的各种情况。它还提供了如何纠正这些问题的示例。

排除丢失执行线程故障的检查清单

进行 Thread Dump 并判断是否有任何线程丢失。您应当参考 config.xml 文件以确定在 Thread Dump 中可以看到多少执行线程。如果没有丢失任何 WebLogic 线程,那么您需要判断应用程序创建的线程是否丢失。

在一些情况下,此问题通过在服务器启动时设置 -XX:MaxPermSize JVM 选项得到了解决。MaxPermSize 可以设置为最大堆分配 (mx) 的一半。尝试设置 .XX:MaxPermSize=128m,并不断增大其值直至问题得到解决。

如果这种方法没有起到帮助作用,那么问题可能是应用程序的异常处理功能故障引起的,需要利用调试器进行代码审核或分析才能发现问题根源。有关详细信息,请参阅下列外部资源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值