JVM启动参数-Xmx的默认值是多少?

网友投稿 3134 2022-11-02

JVM启动参数-Xmx的默认值是多少?

JVM启动参数-Xmx的默认值是多少?

你也可以在程序里试试打印 ​​Runtime.getRuntime().maxMemory()​​ 的值 看看是多少

官网说明: ​​MB的物理内存,则最大堆大小为64 MB,并且大于或等于1 GB的物理内存会导致最大堆大小为256 MB。

除非程序创建足够的对象来要求它,否则JVM实际上不会使用最大堆大小。在JVM初始化期间分配一个小得多的数量,称为初始堆大小。此数量至少为8 MB,否则为物理内存的1/64,最大物理内存大小为1 GB。

分配给年轻代的最大空间量是总堆大小的三分之一。

服务器JVM默认初始和最大堆大小

要用 ​​java -server <类名>​​ 来启动你的程序 ..

默认的初始和最大堆大小在服务器JVM上的工作方式与在客户端JVM上的大小相同,只是默认值可以更高。在32位JVM上,如果有4 GB或更多的物理内存,则默认的最大堆大小可以高达1 GB。在64位JVM上,如果存在128 GB或更多物理内存,则默认最大堆大小最多可为32 GB。您可以通过直接指定这些值来设置更高或更低的初始和最大堆; 见下一节。

指定初始和最大堆大小

您可以使用标志​​-Xms​​​(初始堆大小)和​​-Xmx​​​(最大堆大小)指定初始和最大堆大小。如果您知道应用程序需要多少堆才能正常工作,则可以设置​​-Xms​​​并​​-Xmx​​使用相同的值。如果没有,JVM将首先使用初始堆大小,然后增加Java堆,直到它在堆使用和性能之间找到平衡。

其他参数和选项可能会影响这些默认值。要验证默认值,请使用该​​-XX:+PrintFlagsFinal​​​选项并​​MaxHeapSize​​在输出中查找。例如,在Linux或Solaris上,您可以运行以下命令:

java -XX:+ PrintFlagsFinal -version | grep MaxHeapSize

过多的GC时间和OutOfMemoryError

​​OutOfMemoryError​​​如果在垃圾收集(GC)中花费了太多时间,那么并行收集器会抛出:如果在垃圾收集中花费了超过98%的总时间并且回收了不到2%的堆,则​​OutOfMemoryError​​​抛出a。此功能旨在防止应用程序长时间运行,同时由于堆太小而很少或没有进度。如有必要,可以通过向​​-XX:-UseGCOverheadLimit​​命令行添加选项来禁用此功能。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:eclipse创建maven多模块项目和父子关系说明
下一篇:基于MVVM,用于快速搭建设置页,个人信息页的框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~