java.lang.OutOfMemoryError: Java heap space

JVM: Java HotSpot(TM) Client VM (1.5.0_15-b04, mixed mode, sharing)

operating-system:GNU/Linux(uname -o)

 

问题描述:

一个java小程序,运行一段时间总是会莫名其妙的down掉,有时运行1天后down掉,有时运行5分钟后down掉,并且程序日志没有任何异常

 

问题分析:

查看了一下nohup.out

java.lang.OutOfMemoryError: Java heap space

用visualvm查看了一下heap的使用情况

 

然后进程就down掉了,应该是堆内存不够导致程序挂掉

为什么jvm不带参数运行时堆内存只有60多m?网上说默认堆内存为物理内存的1/64

[123@123 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          2023       1961         61          0          7        908
-/+ buffers/cache:       1045        977
Swap:         4063        655       3408

计算下来也不应该是60多m,这块还要研究一下

 

解决方式:

./java -Xmn100m -Xms400m -Xmx400m ...

然后再观察heap的使用情况

看到heap的使用峰值为200m左右,60多m的heap确实不够用

在运行java程序时一定要带上内存配置

 

备注:

Xmn设置年轻代大小(整个JVM内存大小=年轻代大小+年老代大小+持久代大小。java垃圾回收是基于代的,故该配置会影响垃圾回收的执行。Sun官方推荐配置为整个堆的3/8。)

Xms设置jvm初始堆内存

Xmx设置jvm最大堆内存

将Xms和Xmx设置为一样的大小即可避免堆自动扩展

 

转载于:https://www.cnblogs.com/sean-zou/archive/2013/04/25/3710068.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值