Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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堆/池大小_Java_Garbage Collection_Jvm_Jvm Hotspot_Jvm Arguments - Fatal编程技术网

Java堆/池大小

Java堆/池大小,java,garbage-collection,jvm,jvm-hotspot,jvm-arguments,Java,Garbage Collection,Jvm,Jvm Hotspot,Jvm Arguments,当我启动JVM时,它至少会保留{{xms}}内存,对吗?这意味着这个内存对于JVM进程是私有的(它是malloced),是吗? 当JVM需要增加heap at reserves(mallocs)时,需要更多内存。但是多少钱? 我不相信它的储备完全符合它的需要,可能有一定的台阶(池?)大小 如何配置此“步长” 直到到达{{xmx}}并抛出OOM为止,所有这些都会发生,对吗 JVM何时启动GC?不是在xmx上,而是在保留堆大小(池的顶部)上 如果是这样,最好将xms设置为接近xmx,以防止许多无用的

当我启动JVM时,它至少会保留{{xms}}内存,对吗?这意味着这个内存对于JVM进程是私有的(它是malloced),是吗? 当JVM需要增加heap at reserves(mallocs)时,需要更多内存。但是多少钱? 我不相信它的储备完全符合它的需要,可能有一定的台阶(池?)大小

如何配置此“步长”

直到到达{{xmx}}并抛出OOM为止,所有这些都会发生,对吗

JVM何时启动GC?不是在xmx上,而是在保留堆大小(池的顶部)上

如果是这样,最好将xms设置为接近xmx,以防止许多无用的GCs。
我将有一个巨大的GC而不是许多小GC,每个GC都会冻结我的JVM,所以最好有一个,对吗?

关于开关的含义,你是正确的

我记得开关的方式是

xm*s*=以“s”结尾,类似于“*s*启动内存”

xm*x*=以“x”结尾,如“ma*x*imum内存”

由给定的JVM决定如何从起始内存移动到最大内存。假设两者之间不是非常接近,分配将在我所知道的所有JVM上分步进行

我不知道在任何JVM中有任何控制步骤大小的选项。当然没有标准的选择


不同的JVM有不同的GC策略。一些JVM允许您使用多个GC策略中的一个,由命令行开关控制。

关于开关的含义,您是正确的

我记得开关的方式是

xm*s*=以“s”结尾,类似于“*s*启动内存”

xm*x*=以“x”结尾,如“ma*x*imum内存”

由给定的JVM决定如何从起始内存移动到最大内存。假设两者之间不是非常接近,分配将在我所知道的所有JVM上分步进行

我不知道在任何JVM中有任何控制步骤大小的选项。当然没有标准的选择

不同的JVM有不同的GC策略。一些JVM允许您使用由命令行开关控制的多个GC策略之一

当JVM需要增加heap at reserves(mallocs)时,需要更多内存。但是多少钱

你不应该真的在乎。它只是工作。许多建议使用equal
Xmx
Xms
以便JVM在启动时分配所有内存。这是合理的,请进一步阅读

如何配置此“步长”

它不能,它是完全实现的,并且可能依赖于操作系统

JVM何时启动GC?不是在xmx上,而是在保留堆大小(池的顶部)上

GC比您想象的要复杂一些。当年轻一代被填满时,执行次要GC。主要的GC被称为旧一代已经没有更多的空间了

直到到达{{xmx}}并抛出OOM为止,所有这些都会发生,对吗

否,当到达
Xmx
时,JVM会稳定下来,不会发生任何错误<代码>OutOfMemoryError在GC之后,JVM无法找到足够的空间容纳新对象时抛出(这是一个主要的简化)

如果是这样,最好将xms设置为接近xmx,以防止许多无用的GCs

再一次,您必须了解GC是如何工作的。使用
Xmx
等于
Xms
是一个不错的选择,因为它避免了应用程序运行时不必要的分配(一切都在启动时发生,没有进一步的开销)。GC与此无关

每个GC都会冻结我的JVM,所以最好有一个,不是吗

没有。小型GC通常需要几十毫秒,并且几乎不可见,除非您使用的是实时系统。主要(停止世界)GC可能需要几秒钟的时间,这对于最终用户来说是显而易见的。在经过正确调优的JVM中,应该很少发生主要的GC

当JVM需要增加heap at reserves(mallocs)时,需要更多内存。但是多少钱

你不应该真的在乎。它只是工作。许多建议使用equal
Xmx
Xms
以便JVM在启动时分配所有内存。这是合理的,请进一步阅读

如何配置此“步长”

它不能,它是完全实现的,并且可能依赖于操作系统

JVM何时启动GC?不是在xmx上,而是在保留堆大小(池的顶部)上

GC比您想象的要复杂一些。当年轻一代被填满时,执行次要GC。主要的GC被称为旧一代已经没有更多的空间了

直到到达{{xmx}}并抛出OOM为止,所有这些都会发生,对吗

否,当到达
Xmx
时,JVM会稳定下来,不会发生任何错误<代码>OutOfMemoryError在GC之后,JVM无法找到足够的空间容纳新对象时抛出(这是一个主要的简化)

如果是这样,最好将xms设置为接近xmx,以防止许多无用的GCs

再一次,您必须了解GC是如何工作的。使用
Xmx
等于
Xms
是一个不错的选择,因为它避免了应用程序运行时不必要的分配(一切都在启动时发生,没有进一步的开销)。GC与此无关

每个GC都会冻结我的JVM,所以最好有一个,不是吗


没有。小型GC通常需要几十毫秒,并且几乎不可见,除非您使用的是实时系统。主要(停止世界)GC可能需要几秒钟的时间,这对于最终用户来说是显而易见的。在正确调优的JVM中,主要GC应该很少发生。

关于次要集合与主要集合,只需确保您的-Xmn,即您的eden与保留堆的比率不太小。我认为默认值是1:3,但我通常更喜欢1:10。但这完全取决于您的应用程序。关于次要和主要收藏,请确保您的-Xmn(即您的伊甸园)符合使用期限