Java何时调用垃圾收集器
我读了很多关于Java堆的帖子。我看到如果我们得到java.lang.OutOfMemoryError,我们应该增加-Xmx来解决这个问题 例如Java何时调用垃圾收集器,java,memory,heap-memory,Java,Memory,Heap Memory,我读了很多关于Java堆的帖子。我看到如果我们得到java.lang.OutOfMemoryError,我们应该增加-Xmx来解决这个问题 例如 java -Xmx2048m -Xms256m 这将使Java使用的堆内存增加到2048MB。现在我要问的问题是 关于上述设置的问题: Java在调用垃圾收集器之前是否会等待堆空间达到256MB?这就是为什么我们希望-XMx和-Xms具有相同的值,以便Java在达到最大内存分配之前不调用堆管理的原因吗 如果有人能在Xmx表示最大java堆和Xms表示
java -Xmx2048m -Xms256m
这将使Java使用的堆内存增加到2048MB。现在我要问的问题是
关于上述设置的问题:
Java在调用垃圾收集器之前是否会等待堆空间达到256MB?这就是为什么我们希望-XMx和-Xms具有相同的值,以便Java在达到最大内存分配之前不调用堆管理的原因吗
如果有人能在Xmx表示最大java堆和Xms表示最小java堆的旁边提供一些关于-Xmx和-Xms的额外细节,我将不胜感激
-Xms:最小堆大小。拥有-Xms=1.8GB(32位)可能是不好的,因为您不允许内存用于其他任何东西
-Xmx:最大堆大小(例如:-Xmx1024)
请参见此处了解更多信息:
-Xms:最小堆大小。拥有-Xms=1.8GB(32位)可能是不好的,因为您不允许内存用于其他任何东西
-Xmx:最大堆大小(例如:-Xmx1024)
有关更多信息,请参见此处:第一个问题的答案是:视情况而定。您可以设置不同的GC策略,甚至可以说服JVM在堆满之前不运行GC,但这通常不是一个好主意。这肯定不是通常发生的情况,相反,堆的用途不同,GC是由它们的填充触发的 回答第二个问题:不,这是一个完全不同的问题 使用
-Xms256m
时,JVM将在启动时向操作系统请求256 MB的内存
如果用完了,它将要求更多,直到达到-Xmx
指定的金额。要求操作系统为您的进程分配更多内存需要时间,因此最好避免在服务器上进行,在服务器上,您可以几乎准确地预测应用程序的可用内存量
请注意,上面的过程只与GC间接相关,GC只清除操作系统已分配给JVM的堆
编辑:要检查到底发生了什么,可以使用
-verbose:gc
命令行选项启动JVM。第一个问题的答案是:这取决于具体情况。您可以设置不同的GC策略,甚至可以说服JVM在堆满之前不运行GC,但这通常不是一个好主意。这肯定不是通常发生的情况,相反,堆的用途不同,GC是由它们的填充触发的
回答第二个问题:不,这是一个完全不同的问题
使用-Xms256m
时,JVM将在启动时向操作系统请求256 MB的内存
如果用完了,它将要求更多,直到达到-Xmx
指定的金额。要求操作系统为您的进程分配更多内存需要时间,因此最好避免在服务器上进行,在服务器上,您可以几乎准确地预测应用程序的可用内存量
请注意,上面的过程只与GC间接相关,GC只清除操作系统已分配给JVM的堆
Edit:要检查到底发生了什么,您可以使用
-verbose:gc
命令行选项启动JVM。垃圾收集发生在代数满时
堆上有两个主要的世代:年轻的和年老的。年轻一代也被称为新一代,或伊甸园空间。老一代被细分为幸存者空间和终身世代
新分配的对象从年轻一代开始,如果它们在垃圾收集中幸存下来,则会移动到老一代。垃圾收集在年轻一代中运行得更频繁
这些是你的:
值(初始/最小堆大小,所有代)-Xms
值(所有代的最大堆大小)-Xmx
值(新一代尺寸,可替代-Xmn
如下)-XX:NewSize
最小值(自由空间与活动对象的最小期望比例,以百分比表示)-XX:MinHeapFreeRatio=
最大值(自由空间与活动对象的最大期望比例,以百分比表示)-XX:MaxHeapFreeRatio=
ratio(旧代与新代的比率:默认为2,表示2:1,即堆是旧代的2/3)-XX:NewRatio=
大小(初始/最小新一代大小)-XX:NewSize=
大小(新一代的最大大小)-XX:MaxNewSize=
(初始堆的大小根据物理内存的大小计算,并尝试最大限度地利用堆的物理内存)-XX:+AggressiveHeap
值(初始/最小堆大小,所有代)-Xms
值(所有代的最大堆大小)-Xmx
值(新一代尺寸,可替代-Xmn
如下)-XX:NewSize
最小值(自由空间与活动对象的最小期望比例,以百分比表示)-XX:MinHeapFreeRatio=
最大(所需的自由空间与活动对象的最大比例-XX:MaxHeapFreeRatio=