-Xms
(初始堆大小)和 -Xmx
(最大堆大小)指定堆内存,建议设置为相同值避免动态调整开销,如 -Xms2g -Xmx2g
。-XX:NewRatio
设置新生代与老年代比例(如 -XX:NewRatio=2
表示新生代占堆的1/3),或通过 -XX:NewSize
/-XX:MaxNewSize
直接指定新生代大小。-XX:+UseG1GC
,并设置最大停顿时间 -XX:MaxGCPauseMillis
。-XX:+UseParallelGC
,配合 -XX:ParallelGCThreads
指定线程数。-XX:MetaspaceSize
和 -XX:MaxMetaspaceSize
控制类元数据内存。StringBuilder
代替字符串拼接)。ArrayList
替代 LinkedList
,HashMap
替代 Hashtable
,减少内存占用。sudo sysctl vm.swappiness=10
(数值越低越少使用Swap)。/etc/security/limits.conf
提升应用并发能力。sudo sysctl vm.nr_hugepages=1024
配置(需内核支持),减少内存碎片。sudo fallocate -l 1G /swapfile
,格式化并启用。jstat
:监控GC情况,如 jstat -gcutil <pid> 1000
(每秒输出一次)。VisualVM
:分析堆内存、线程状态及GC日志,定位性能瓶颈。-XX:+PrintGCDetails
和 -XX:+PrintGCDateStamps
记录GC日志,分析Full GC频率和耗时。StringBuilder
拼接字符串,避免循环内频繁创建String
对象。ExecutorService
)管理线程,避免过多线程导致上下文切换开销。参考来源: