转:weblogic怎么去设置jvm heap大小
答案:2 悬赏:50 手机版
解决时间 2021-03-28 12:24
- 提问者网友:半生酒醒
- 2021-03-28 07:21
转:weblogic怎么去设置jvm heap大小
最佳答案
- 五星知识达人网友:duile
- 2019-12-20 13:26
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() 的其它线程将挂起。
排除丢失执行线程故障的检查清单
进行 Thread Dump 并判断是否有任何线程丢失。您应当参考 config.xml 文件以确定在 Thread Dump 中可以看到多少执行线程。如果没有丢失任何 WebLogic 线程,那么您需要判断应用程序创建的线程是否丢失。
在一些情况下,此问题通过在服务器启动时设置 -XX:MaxPermSize JVM 选项得到了解决。MaxPermSize 可以设置为最大堆分配 (mx) 的一半。尝试设置 .XX:MaxPermSize=128m,并不断增大其值直至问题得到解决。
如果这种方法没有起到帮助作用,那么问题可能是应用程序的异常处理功能故障引起的,需要利用调试器进行代码审核或分析才能发现问题根源。有关详细信息,请参阅下列外部资源。
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() 的其它线程将挂起。
排除丢失执行线程故障的检查清单
进行 Thread Dump 并判断是否有任何线程丢失。您应当参考 config.xml 文件以确定在 Thread Dump 中可以看到多少执行线程。如果没有丢失任何 WebLogic 线程,那么您需要判断应用程序创建的线程是否丢失。
在一些情况下,此问题通过在服务器启动时设置 -XX:MaxPermSize JVM 选项得到了解决。MaxPermSize 可以设置为最大堆分配 (mx) 的一半。尝试设置 .XX:MaxPermSize=128m,并不断增大其值直至问题得到解决。
如果这种方法没有起到帮助作用,那么问题可能是应用程序的异常处理功能故障引起的,需要利用调试器进行代码审核或分析才能发现问题根源。有关详细信息,请参阅下列外部资源。
全部回答
- 1楼网友:思契十里
- 2020-09-04 19:40
java_opts
这个是,tomcat已经定义好的,名,你只需要将
java_opts='-xms256m -xmx512m'
这句话,添加到
catalina.bat
set java_opts='-xms256m -xmx512m'
catalina.sh
java_opts='-xms256m -xmx512m'
这两个文件 的开始就可以。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯