JVM堆内存占用高好还是占用低更好

堆内存是否越大越好

1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作,但是现在垃圾回收器也支持了与用户线程同时进行,但是总体来说,如果内存很大的情况下,gc效率还是降低的,在gc时对服务器的性能影响很大
2.Heap大小并不决定进程的内存使用量。进程的内存使用量要大于-Xmx定义的值,因为Java为其他任务分配内存,例如每个线程的Stack等。
硬件环境
硬件环境也影响GC的效率,例如机器的种类,内存,swap空间,和CPU的数量。
如果你的程序需要频繁创建很多对象,会导致JVM频繁GC。这种情况你可以增加机器的内存,来减少Swap空间的使用。

堆内存占用率是高好还是低更好

这个问题也还是要从GC的角度考虑
首先分析占用率低的情况
首先jvm只有在gc的时候才会清理堆内存中的对象,如果堆内存的占用总是很小的话

  1. jvm几乎没有创建新的对象
  2. jvm频繁的发生gc,也就是堆内存经常满,然后gc,但是gc的效率很有效。总能将堆内存的清理到内存占用低的情况。

分析占用率高的情况

  1. 几乎没有发生full gc,很多对象仍然在老年代。这种情况是比较理想的情况,也就是大部门的对象是朝生夕死的,在年轻代就将大部分gc掉了。效率较高
  2. 也有可能是很多对象根本gc不掉,这样会导致占用率飙升,甚至oom

总结 堆内存占用高或者低,这个问题并不能直接得到答案,还需要借助jvm的架空工具,比如jstat命令,查看gc次数,gc时间等。
image.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值