Java垃圾收集(Garbage Collection, GC)是Java虚拟机(JVM)自动管理内存的机制,它负责回收不再被程序使用的对象所占用的内存空间。与C/C++等需要手动管理内存的语言不同,Java开发者不需要显式地释放对象内存。
现象:内存持续增长,频繁Full GC但回收效果不佳 原因:
解决方案:
// 错误示例 - 静态Map导致内存泄漏
public class LeakExample {
private static Map<String, Object> cache = new HashMap<>();
public void addToCache(String key, Object value) {
cache.put(key, value);
}
}
// 正确做法 - 使用WeakHashMap或设置大小限制
public class FixedExample {
private static Map<String, Object> cache = new WeakHashMap<>();
// 或使用有大小限制的缓存
private static Map<String, Object> limitedCache = Collections.synchronizedMap(
new LinkedHashMap<String, Object>(100) {
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > 100;
}
});
}
现象:系统卡顿,响应时间变长 原因:
解决方案:
-Xmx
和-Xms
-XX:NewRatio
现象:应用出现明显卡顿 原因:
解决方案:
-XX:+UseParallelGC
-XX:+UseZGC
(JDK11+)-XX:PretenureSizeThreshold
设置直接进入老年代的对象大小阈值通过合理选择和调优垃圾收集器,可以显著提高Java应用的性能和稳定性。
没有搜到相关的文章