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,并不断增大其值直至问题得到解决。
如果这种方法没有起到帮助作用,那么问题可能是应用程序的异常处理功能故障引起的,需要利用调试器进行代码审核或分析才能发现问题根源。有关详细信息,请参阅下列外部资源。
每个weblogic server 都是运行在一个java虚拟机上 ,对weblogic的内存设置也就是对java虚拟机的内存设置。主要设置的为jvm内存,永久内存设置为128m或者256m即可。设置jvm内存时,32位机器最大可启动1.8G内存的jvm,64位机器最大可启动3G内存的jvm;
而在设置上下限的时候最好将两者设为一致,以避免浪费频繁的申请和释放内存的开销。
MEM_ARGS=-Xms512m -Xmx1024m -XX:MaxPermSize=128m
-Xms512m表示jvm内存下限为512m
-Xmx512m表示jvm内存上限为1024m
-XX:MaxPermSize=128m表示永久内存为128m
-Dfile.encoding=GBK这个是设置JVM启动后,运行时需要的类java.lang.System里的properties属性,设置JVM默认编码是GBK,如果不做这个设置,JVM会拿 *** 作系统的编码作为默认编码。所以,也可以把 *** 作系统编码改为GBK,这样就不用加-Dfile.encoding=GBK欢迎分享,转载请注明来源:内存溢出
评论列表(0条)