Zakariyya / blog

https://zakariyya.github.io/blog/
6 stars 1 forks source link

JVM 修改内存 #168

Open Zakariyya opened 7 months ago

Zakariyya commented 7 months ago

要修改Java虚拟机(JVM)的内存设置,需要调整Java应用程序的堆内存和非堆内存大小。这可以通过以下两个参数来完成:-Xms 和 -Xmx。

-Xms:这个参数设置JVM堆的初始内存大小。 -Xmx:这个参数设置JVM堆的最大内存大小。 例如,如果想将初始堆大小设置为2GB,最大堆大小设置为4GB,可以在启动Java应用程序时使用以下命令:

java -Xms2G -Xmx4G YourApp

这将设置JVM堆的初始大小为2GB,并允许堆增长到最大4GB。请注意,这些值可以根据应用程序需求进行调整。

如果需要调整非堆内存大小,可以使用 -XX:MaxPermSize (适用于JDK 7及更早版本)或者 -XX:MaxMetaspaceSize (适用于JDK 8及更新版本)参数。

java -XX:MaxMetaspaceSize=256M YourApp

这会将Metaspace的最大大小设置为256MB。

对于开发/测试环境

一般来说,建议将JVM的堆内存设置为宿主机内存的一半或更少。例如,可以将其设置为宿主机内存的25%到50%。

如果宿主机有32GB内存,可以考虑设置JVM堆大小在8GB到16GB之间。

对于生产环境

在生产环境中,建议更加谨慎地分配内存。通常建议保留一定量的内存用于操作系统、其他进程和可能的缓冲区。 如果宿主机有32GB内存,JVM堆大小设置在16GB左右,这取决于应用程序的性能需求以及其他系统资源的使用情况。

在较新的Java版本中(JDK 8及以后版本),-XX:PermSize 和 -XX:MaxPermSize 已经被移除,取而代之的是 Metaspace 和 -XX:MaxMetaspaceSize。

JDK 8或更新版本:

java -server -XX:MetaspaceSize=8192M -XX:MaxMetaspaceSize=16384M --add-opens java.base/java.lang=ALL-UNNAMED YourApp

这将设置 Metaspace 的初始大小为 8192MB,最大大小为 16384MB,并启动Java应用程序。确保将 YourApp 替换为实际应用程序名称或启动命令。

请注意,JVM参数的确切名称和功能可能会因JVM版本而异,所以在使用时要根据使用的JVM版本进行调整。