你知道如何解决JVM内存溢出问题吗?这里想跟大家分享一下,JVM处理堆和非堆两种内存,供开发者启动时由JVM本身用来存储类信息
JVM内存溢出详细解决方案
JVM内存溢出类型
javalangOutOfMemoryError:PermGenspace
<.p>JVM管理两种类型的Java内存:堆和非堆。上面提到的是非堆是JVM启动时创建的类信息GC在运行堆的不同时期不会释放空间如果Web应用程序使用了大量的第三方jar或者应用程序的类文件太多并且MaxPermSize设置太小,也会导致这个内存不足。太忙,导致JVM内存溢出或者tomcat热部署时,不会清理之前加载的环境,只会将上下文改为新部署的非栈内容。一个最佳配置示例(本人确认,自从使用此配置后,tomcat从未死机))
setJAVA_OPTS=Xmsm
:javalangOutOfMemoryError:Javaheapspace
我们来看看JVM内存溢出的第二种情况。第一种情况是补充。Xmx)是物理内存/如果剩余内存小于%,JVM会将堆增加到Xmx设置的值。如果剩余内存超过%,JVM会将堆减少到Xms设置的值,因此Xmx开启。服务器Xms设置一般应设置相同,以避免每次GC后调整虚拟机堆的大小。假设物理内存无限大,与机器操作系统相关的JVM内存最大值在g到g之间,但是bit大小不会有限制
垃圾收集GC的作用JVM调用GC的频率还是很高的垃圾收集主要有两种情况
当应用程序线程空闲,另一个不足时,java内存堆会被不断的调用,如果不断的回收不能解决内存堆不足的问题,就会报outofmemory错误,因为这个异常是由系统的运行环境决定的,无法预测什么时候会出现。更改增加了GC触发的机会
lishixinzhi/Article/program/Java/hx/201311/26579上一篇:内存条为什么不建议金士顿
下一篇:java堆内存和栈内存的区别