Java JVM-年轻一代和老一代比率/分配
我正在为max分配8GB内存给用Java编写的应用程序。它会失去记忆。我认为默认情况下,年轻一代总是比老一代小(占堆的1/4)。伊甸园/幸存者1,2在年轻一代中。我相信新的物体是在伊甸园空间创造出来的 即使老一代还没有满,但年轻一代已经完全满了,java应用程序是否仍然会耗尽内存Java JVM-年轻一代和老一代比率/分配,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,我正在为max分配8GB内存给用Java编写的应用程序。它会失去记忆。我认为默认情况下,年轻一代总是比老一代小(占堆的1/4)。伊甸园/幸存者1,2在年轻一代中。我相信新的物体是在伊甸园空间创造出来的 即使老一代还没有满,但年轻一代已经完全满了,java应用程序是否仍然会耗尽内存 如果短寿命对象比长寿命对象多,那么是否可以为年轻一代分配更多内存,或者至少将堆的50%分配给年轻一代?或者由于jvm维护,它应该始终是堆的1/4吗?首先,1/4似乎是另一回事。这是分配给堆的内存量,除非您指定-Xmx(
如果短寿命对象比长寿命对象多,那么是否可以为年轻一代分配更多内存,或者至少将堆的50%分配给年轻一代?或者由于jvm维护,它应该始终是堆的1/4吗?首先,
1/4
似乎是另一回事。这是分配给堆的内存量,除非您指定-Xmx
(当您在容器中时以及启用了哪些标志时,这有点不同)
即使老一代还没有满,但年轻一代已经完全满了,java应用程序是否仍然会耗尽内存
否。当年轻的Eden
已满时,来自的活动对象将移动到Survivor
,当来自Survivor的对象“存活”足够的GC周期时,它们将移动到旧区域(由XX:MaxTenuringThreshold
控制)。当旧一代达到某个极限(IHOP
在G1
中),将发生与旧一代相关的GC循环。一些
如果短寿命对象比长寿命对象多,那么是否可以为年轻一代分配更多内存,或者至少将堆的50%分配给年轻一代
年轻区域越大,暂停时间越长。年轻的GC周期总是阻止世界事件,因此将它们变得太大是不好的。此外,这将影响您的
-XX:MaxGCPauseMillis
;也不要自己这么做:默认情况下。默认设置已经包括比老一代大的年轻一代。我想,这意味着这样做是可以的…