Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM-年轻一代和老一代比率/分配_Java_Garbage Collection_Jvm - Fatal编程技术网

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

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(

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

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


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

首先,
1/4
似乎是另一回事。这是分配给堆的内存量,除非您指定
-Xmx
(当您在容器中时以及启用了哪些标志时,这有点不同)

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

否。当年轻的
Eden
已满时,来自的活动对象将移动到
Survivor
,当来自Survivor的对象“存活”足够的GC周期时,它们将移动到旧区域(由
XX:MaxTenuringThreshold
控制)。当旧一代达到某个极限(
IHOP
G1
中),将发生与旧一代相关的GC循环。一些

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


年轻区域越大,暂停时间越长。年轻的GC周期总是阻止世界事件,因此将它们变得太大是不好的。此外,这将影响您的
-XX:MaxGCPauseMillis
;也不要自己这么做:默认情况下。

默认设置已经包括比老一代大的年轻一代。我想,这意味着这样做是可以的…