当前位置:首页 > 内存 > 正文

java内存泄露怎么解决

  • 内存
  • 2024-06-13 19:22:14
  • 9740

一、java内存溢出Exceptioninthread"Thread-0"emoryError:Javaheapspace手动设置MaxPermSize如果是linux系统,修改TOMCAT_HOME/bin/如果是windows系统,修改TOMCAT_HOME/bin/
catalinabat,
4
在“echo"UsingCATALINA_BASE:$CATALINA_BASE"
"上方添加以下行:
5
JAVA_OPTS="-server-XX:PermSize=64M-XX:MaxPermSize=128m
6
7
///////////////////////////////////////////////////////////////////////////////
/
8
9
解决方案二:
10
修改文件修改如下:
11
12
-
vmargs
13
edJavaVersion=1.5
14
-
Xms128m
15
-
Xmx512m
16
-XX:PermSize=
64J
17
-XX:MaxPermSize=
128J
18
19
如果还是报错,可以考虑修改以下
20
21
-
vmargs
22
edJavaVersion=1.5
23
-
Xms512m
24
-
Xmx1024m
25
-XX:PermSize=
256M
26<-XX:MaxPermSize=512M
二、JVM内存溢出的两大类型及解决方案

你知道如何解决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