相对忘贫 2017-04-24 10:25 采纳率: 50%
浏览 964
已采纳

jvm内存分配的几点疑惑

图片说明
最近在jvm内存分配及gc这块遇到一点疑惑,问题已在图片中列出。烦请各位大咖多多指教,谢谢。

  • 写回答

1条回答 默认 最新

  • yizishou 2017-04-25 06:22
    关注

    看起来你这个应用运行了很长时间了,jvm的内存大小已经基本稳定了。对JVM来说,并不是内存越大越好,只要够用,内存越小越好。

    你的问题:

    1 . 就算初始比例是1:2,经过很长时间的调整之后调整成现在这个样子是完全合理的。现在你的应用有较大的老年代和较小的新生代,说明你的应用中存在大量的长时间存在的老对象,而新创建的短命对象较少,比较符合一个server端应用的内存布局。

    2 . 不是每次gc都会调大内存。要知道对于你的应用来说,新生代里面充满了短命对象,一次YoungGC甚至能清理掉90%以上的新生代对象,只有很少的对象会晋升到老年代。而就算很久之后老年代快满了,触发一次FullGC,也可能清理掉老年代的一半的空间,又足够运行很长时间的了,这样的内存结构是健康的,JVM完全没必要申请更大的空间。如果一次FullGC清理掉太多老年代的空间,JVM甚至会减少内存大小。

    3 . 永久代本来就是一直很稳定的区域,只有在应用启动的时候会大量加载类和一些常量,稳定运行之后很少会发生变化,使用99%是合理的。就算使用率是50%,过一点时间之后也会调小永久代空间,节省内存。

    总结一下,如果你的应用没有OOM,没有很频繁地FullGC,那就不要太紧张了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题