Java 内存管理优化是一个系统工程,通常分为JVM 层面、代码层面、架构层面三个维度。下面按“从底层到上层”的方式,系统讲一下优化思路。
-Xms4g -Xmx4g
-Xms 和 -Xmx 设置成一样,避免动态扩容带来的抖动-XX:+UseG1GC)、ZGC、Shenandoah示例:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
❌ 反面示例:
for (int i = 0; i < 100000; i++) {
String s = new String("abc");
}
✅ 优化:
String s = "abc";
new ArrayList<>(1024);
new HashMap<>(512);
Vector、Hashtable(线程安全但慢)常见原因:
✅ ThreadLocal 正确用法:
try {
threadLocal.set(value);
// business
} finally {
threadLocal.remove();
}
int vs Integer
long vs Long
EnumMap / EnumSetArrayList 优于 LinkedListArrayDeque 替代 StackWeakHashMap<String, Object>
或:
Caffeine.newBuilder()
.maximumSize(10000)
.build();
jstat -gcjmap -histojstack✅ 优先顺序:
如果你愿意,可以告诉我:
我可以给你一套更具体的优化方案或参数模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。