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。

相关推荐
学长毕业设计1 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西1 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西1 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午1 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065252 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_2 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
予昊3 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203513 小时前
【SpringAI入门】初识SpringAI
java
weixin_461408583 小时前
Mybatis-flex小记
java·开发语言·mybatis
Json____4 小时前
校园跑腿系统:使用node从零构建一套前后端分离的全栈实践项目
计算机网络·node·管理系统·wwwoop.com