首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JVM -年轻一代和老一代比率/分配

JVM -年轻一代和老一代比率/分配
EN

Stack Overflow用户
提问于 2020-01-30 19:56:32
回答 1查看 1.8K关注 0票数 3

我正在为用Java编写的应用程序分配最大8GB内存。它失去了记忆。我相信,在默认情况下,年轻一代总是比老一代少(堆的1/4)。伊甸园/幸存者1,2在年轻一代中。我相信新的物体是在伊甸园空间里创造出来的。

java应用程序是否仍然内存不足,即使老一代还没有满,但是年轻一代已经完全满了?

如果短命对象比长寿对象多,那么是否可以将更多内存分配给年轻一代,或者至少将堆的50%分配给年轻一代?或者,由于jvm的维护,应该总是堆的1/4吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 23:03:45

首先,1/4似乎是另一回事。这就是将多少内存分配给您的堆,除非您指定了-Xmx (当您在容器中时,它与您启用的标志略有不同)。

:java应用程序是否仍然内存不足,尽管老一代还没有满,但是年轻一代已经完全满了?

不是的。当年轻的Eden满员时,从这些活动对象移到Survivor,当幸存者的对象“生存”足够多的GC周期时,它们被移动到旧的区域(用XX:MaxTenuringThreshold控制)。当老一代达到一定的极限(IHOP in G1)时,就会发生接触老一代的GC循环。一些more details here

如果短命对象比长寿对象多,那么是否可以将更多内存分配给年轻一代,或者将堆的至少50%分配给年轻一代?

年轻地区越大,停顿的时间就越长。年轻的GC周期总是停止世界的事件,所以让它们太大是不好的。此外,这将影响您的-XX:MaxGCPauseMillis;并且也不会单独这样做:默认情况下是G1 GC will adjust regions as it finds most appropriate to

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59993585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档