WebLogic: 内存溢出

        每次部署完项目,重启Weblogic服务,总是遇到java.lang.OutOfMemoryError: PermGen space,其实物理内存也是够的,当时的解决方法就是多重启几次Weblogic来解决这个问题,但是总觉得问题不应该用网管式的方法来解决问题,重启不应该是万能的,想着问题可能出现在PermGen space内存的大小上,但是根据JVM的机制,不是有自动回收垃圾机制吗?为什么不会自动回收呢?在网上找了找资料,了解到虽说JVM有自动回收机制,但是JVM对load class不会回收的,PermGen space(这块正好是存放Class文件和Meta文件),所以如果PermGen space设置空间太小必然导致内存的溢出。

         如何解决PermGen space(permanent heap generation space 永久堆栈方法区)内存大小的问题,其实非常简单,直接对“setDomainEnv.sh”文件中的 MaxPermSize进行设置,根据服务器内存大小对其进行设置。

        setDomainEnv.sh在 “/base_domain/bin”这个目录下,

vi setDomainEnv.sh

  然后查找“MaxPermSize”,在vi编辑下 ?MaxPermSize,查找到这个值以后,修改64位和32位这两个最大永久值,接下重启Weblogic就OK了。

MEM_MAX_PERM_SIZE_64BIT="-XX:MaxPermSize=512m"
export MEM_MAX_PERM_SIZE_64BIT

MEM_MAX_PERM_SIZE_32BIT="-XX:MaxPermSize=512m"
export MEM_MAX_PERM_SIZE_32BIT

PS:附加一点Weblogic的基本操作,防止自己再次忘记

  • 杀掉Weblogic服务,首先查找 ps -ef|grep weblogic,然后根据ID号,kill -9 ID
  • 后台启动Weblogic服务器(进入/base_domain/bin目录下):nohup ./startWeblogic.sh &
原文地址:https://www.cnblogs.com/taoSir/p/4835690.html