jdk内存配置

JDK 内存配置主要通过 JVM 启动参数调整堆内存、非堆内存等核心区域,常用参数及配置示例如下:

  1. 堆内存核心参数

◦ -Xms:堆内存初始大小,建议与 -Xmx 设为相同值避免运行时动态扩容,如 -Xms2g

◦ -Xmx:堆内存最大上限,如 -Xmx4g

◦ -Xmn:新生代内存大小,通常设为堆内存的 1/3~1/2,如 -Xmn1g

◦ -XX:SurvivorRatio:新生代中 Eden 区与 Survivor 区的比例,默认 8(即 Eden:S0:S1 = 8:1:1),如 -XX:SurvivorRatio=6

  1. 非堆内存参数

◦ -XX:PermSize(JDK 7及以前)/ -XX:MetaspaceSize(JDK 8及以后):方法区初始大小,如 -XX:MetaspaceSize=256m

◦ -XX:MaxPermSize(JDK 7及以前)/ -XX:MaxMetaspaceSize(JDK 8及以后):方法区最大大小,如 -XX:MaxMetaspaceSize=512m

  1. 直接内存参数

◦ -XX:MaxDirectMemorySize:设置直接内存上限,未指定时默认与 -Xmx 相同,如 -XX:MaxDirectMemorySize=1g

  1. 配置示例(Java 8+ 生产环境)

java -Xms2g -Xmx4g -Xmn1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -jar your-app.jar

  1. 配置原则

◦ 堆内存总大小不超过物理内存的 1/2,避免系统频繁换页;

◦ 新生代占比过高会减少老年代空间,易引发老年代 GC;占比过低会增加 Minor GC 频率;

◦ 方法区大小需根据项目依赖包数量调整,避免出现 Metaspace OutOfMemoryError。

相关推荐
rannn_1112 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
IKUN家族4 小时前
Spring IoC&DI
java·spring·rpc
山荷枝5 小时前
03-框架--Spring
java·后端·spring
ChaHae-In6 小时前
SpringBoot统一功能处理
java·spring boot·后端
coder!mq6 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding6 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
心平气和量大福大7 小时前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
952367 小时前
Spring-cloud配置中心
java·spring·spring cloud·微服务
ydd1001008 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
真上帝的左手9 小时前
10. 软件设计&架构-Spring Security 7 整合CAS SSO 单点登录
java·spring·架构·sso