相对忘贫 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 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?