一、默认占用内存

64位操作系统,默认最小堆内存大小256M,最大内存为1/4可用系统内存。

二、设置指定内存大小

2.1 Java8之前

-Xms512M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

-Xms128m JVM初始分配的堆内存

-Xmx512m JVM最大允许分配的堆内存,按需分配

-XX:PermSize=64M JVM初始分配的永久代内存大小

-XX:MaxPermSize=128M JVM最大允许分配的永久代内存,按需分配

java -jar -Xms512M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M xxx-0.0.1-SNAPSHOT.jar

2.2 Java8之后

-Xms512M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M

-XX:MetaspaceSize=128M (元空间默认大小)

-XX:MaxMetaspaceSize=128M (元空间最大大小)

元空间(Metaspace)在Java8之后取代了永久代(Permanent Generation (PermGen))

Metaspace 的大小是动态变化的,并且默认情况下没有明确的上限(取决于系统内存大小)。

java -jar -Xms512M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M xxx-0.0.1-SNAPSHOT.jar

三、-Xms = -Xmx的好处

优点:
避免由于heap内存扩大或缩小导致应用停顿。
避免垃圾回收完成后JVM重新分配内存。

不足:
减少垃圾回收的频率,增加垃圾回收时的暂停时间。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐