JVM 内存溢出解决和一些参数的理解

在一个电商项目的一个项目修改页面里修改页面总是报OOM错误。里面主要有一些PRC调用,和要把图片从服务器下载下来的函数,具体为甚么要下载图片不知道,感觉多此一举。出现错误开始只是调了下 —Xmx -Xms —Xmn -Xss 这些参数但是并没有效果。后来发现是对于堆和非堆内存理解不对。所以调参有误。
Jvm 关于oom permSize space
Idea 错误如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006da14f69, pid=19304, tid=15924
#
# JRE version: 6.0_45-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x134f69]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

查看日志
发现堆的使用情况如下:

Heap
 PSYoungGen      total 955456K, used 5772K [0x00000007c1800000, 0x0000000800000000, 0x0000000800000000)
  eden space 890624K, 0% used [0x00000007c1800000,0x00000007c1da3380,0x00000007f7dc0000)
  from space 64832K, 0% used [0x00000007f7dc0000,0x00000007f7dc0000,0x00000007fbd10000)
  to   space 61248K, 0% used [0x00000007fc430000,0x00000007fc430000,0x0000000800000000)
 PSOldGen        total 1073088K, used 66795K [0x0000000780000000, 0x00000007c17f0000, 0x00000007c1800000)
  object space 1073088K, 6% used [0x0000000780000000,0x000000078413ac38,0x00000007c17f0000)
 PSPermGen       total 83968K, used 83966K [0x000000077ae00000, 0x0000000780000000, 0x0000000780000000)
  object space 83968K, 99% used [0x000000077ae00000,0x000000077ffff878,0x0000000780000000)

从中可以看出Heap中的剩余空间还是有很多的,但是PSPermGen持久代的内存已经用尽,所以在VMoption中加 —XX:permSize64m –XX:MaxPermSize 128M即可解决。这个两个参数代表的含义为非堆内存的大小和最大非堆内存大小。默认的时候就是物理内存的1/64、1/4;非堆内存就是jvm自己用的的内存,就是加载一些静态方法,类对象等数据。还有一个堆内存,就是平时我们用的的内存,一些实例对象放的地方,eden区和surver区等都属于堆内存。这里的的错误很明显是非堆内存溢出引起的。所以加大内存就行。

还有就是持久代(方法区)不属于堆的一部分。我这里用的的JDK是1.6版本的。因为当我把非堆内存加大超过堆内存并没有报错。这一点应该是可以说明问题的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值