1. 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. 垃圾回收

  2. 1.2 STWhistorical

    1. 什么是STW 由于GC导致应用程序无法对外响应 2. 为什么会发生STW 有GC的语言中最起码的有两个线程,用户线程和GC线程 用户线程创建对象,GC回收对象,如果两个线程并发执行那可能把不是垃圾的对象给回收掉,需要GC期间会把用户线程暂停 3. 如何解决STW

  3. 1.3 内存泄露historical

    1. 什么是内存泄露 内存不断膨胀无法回收内存最后发生OOM,这就是内存泄漏,最后发生OOM 2. 为什么会发生内存泄露 GC没法回收被Root对象引用的内存 3. 如何解决内存泄露 关键是找到没被释放的Root对象 3.1. 资源没有释放 3.2. 线程等资源创建太多 3.3. 非GC管理的内存

  4. 2.1 GC调优historical

    1. GC调优步骤 1.1. 确定GC调优目的 - CPU 利用率:回收算法会在多大程度上拖慢程序?有时候,这个是通过回收占用的 CPU 时间与其它 CPU 时间的百分比来描述的。 - GC 停顿时间:回收器会造成多长时间的停顿?目前的 GC 中需要考虑 STW 和 Mark Assist 两个部分