产生内存泄漏的原因
一个长生命周期的对象持有一个短生命周期对象的引用通俗讲就是该回收的对象,因为引用问题没有被回收,最终会产生OOM。
产生内存抖动的原因
内存频繁的分配与回收,(分配速度大于回收速度时)最终会产生OOM
内存回收的相关算法
1. 标记清除算法Mark-Sweep(节省内存)
缺点:
效率问题,标记和清除两个过程效率都不高
回收后会产生大量不连续的空间,造成空间碎片太多.
2. 复制算法Copying(效率高)
缺点: 直接将堆划分两半,有点简单粗暴,对内存会造成浪费.
3. 标记压缩算法Mark-Compact
4. 分代收集算法