Garbage Collection / Runtime
4 篇笔记
- 1.1 GChistorical
1. 什么是GC 针对堆内存的自动内存回收机制 2. 为什么需要GC 把程序员从手动free内存的工作中释放出来 2.1. GC的问题 2.1.1. 内存泄露 内存泄露.md 2.1.2. STW STW.md 3. 如何进行垃圾回收 3.1. GC触发 定时或者内存空间不足时 3.2. 垃圾回收
- 1.2 STWhistorical
1. 什么是STW 由于GC导致应用程序无法对外响应 2. 为什么会发生STW 有GC的语言中最起码的有两个线程,用户线程和GC线程 用户线程创建对象,GC回收对象,如果两个线程并发执行那可能把不是垃圾的对象给回收掉,需要GC期间会把用户线程暂停 3. 如何解决STW
- 1.3 内存泄露historical
1. 什么是内存泄露 内存不断膨胀无法回收内存最后发生OOM,这就是内存泄漏,最后发生OOM 2. 为什么会发生内存泄露 GC没法回收被Root对象引用的内存 3. 如何解决内存泄露 关键是找到没被释放的Root对象 3.1. 资源没有释放 3.2. 线程等资源创建太多 3.3. 非GC管理的内存
- 2.1 GC调优historical
1. GC调优步骤 1.1. 确定GC调优目的 - CPU 利用率:回收算法会在多大程度上拖慢程序?有时候,这个是通过回收占用的 CPU 时间与其它 CPU 时间的百分比来描述的。 - GC 停顿时间:回收器会造成多长时间的停顿?目前的 GC 中需要考虑 STW 和 Mark Assist 两个部分