-Xms
和 -Xmx
设置初始堆和最大堆大小,建议设置为物理内存的1/4~3/4,避免过大导致频繁GC或内存浪费。例如:-Xms2g -Xmx4g
。-XX:+UseG1GC
),适合大内存和低延迟场景,可减少内存碎片和GC停顿。根据场景可调整参数如-XX:MaxGCPauseMillis
控制最大停顿时间。-XX:PrintGCDetails -Xloggc:gc.log
记录GC日志,结合工具(如GCLogViewer、VisualVM)分析GC频率和耗时,优化参数。vm.swappiness
(默认60,可设为10~30)减少对Swap的依赖,避免内存不足时频繁交换。修改/etc/sysctl.conf
后执行sysctl -p
生效。systemctl disable
关闭非核心服务(如cups、postfix),释放内存资源。ArrayList
、HashMap
等高效结构,避免LinkedList
等高开销结构。try-with-resources
或手动关闭,防止内存泄漏。jstat -gcutil <pid>
实时查看GC情况,jmap -heap <pid>
分析堆内存使用,VisualVM
或JProfiler
进行可视化监控。java -XX:PrintFlagsFinal | grep -i heapsize
确认JVM参数是否生效,或查看应用启动日志。-XX:UseContainerSupport
参数,让JVM识别容器内存限制。-XX:InitialRAMPercentage
和-XX:MaxRAMPercentage
(如均设为70%)替代固定值,适配动态内存环境。