鲁班学院java架构师成长路线

1、jvm 提供了几个命令行参数, 用于定义分配给不同内存区域的内存大小。

java架构师成长路线-如何定义jvm堆的大小?-LMLPHP

2、启动 jvm 时, 可以使用命令行标志-Xmx 和 size指定最大堆大小。例如, 使用 java -Xmx512m 启动 jvm

3、若要指定分配给 jvm 的初始内存量, 请使用-Xms 参数。它的工作方式与-Xmx 相同。如果您知道您的函数需要一定的内存, 则建议使用此参数, 因为它将在扩展到所需大小之前将应用程序从过短的垃圾回收中保存出来。

java架构师成长路线-如何定义jvm堆的大小?-LMLPHP

4、如果将这两个参数设置为相同的值, jvm 将在启动时要求操作系统进行该完整内存分配, 并且它不会增大。

5、对于初始内存分配, 默认值为计算机上内存的一半, 最多 1 gb。对于最大默认值, 它是计算机物理内存的较小的 1 gb 和四分之一。考虑到这些值在不同的计算机之间可能会有很大的差异, 您应该为生产环境中运行的任何代码显式指定值, 并确保您的代码对这些值执行得满意。

6、与设置初始和最大堆大小类似, 您也有用于设置堆栈大小的 jvm 启动参数。对于大多数正在运行的程序, 应避免设置这些程序。如果您发现自己经常遇到StackOverflowExcepti , 则应检查您的代码, 并将尽可能多的递归方法替换为迭代对应方法。

7、其他相关的 jvm 参数包括-XX:Permsize和-XX:MaxPermSize的永久生成。如果您有大量的类或字符串常量, 或者如果您正在使用非 java 语言创建许多动态类定义, 则可能需要设置此设置。

java架构师成长路线-如何定义jvm堆的大小?-LMLPHP

09-01 17:32