JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块 Survivor 区域是空闲着的。...程序还在继续运行, 又会产生新的对象放入到Eden区, 当Eden区又被放满了, 就会再次出发GC, 此时会寻找Eden+sruvivor(一个区域)中的GC Root, 将其标记,
没有被引用的对象被回收...使用工具查看GC流转的过程
我们使用的工具是jvisualvm工具, 这是jdk自带的一个工具
先来准备一段代码, 一段很简单的代码, 不停的去产生新的对象
package com.lxl.jvm;...new ArrayList(): 是放在堆中的一个对象
new User(): 在堆中构建一个新的User对象, 并将这个对象添加到new ArrayList()中....那就是没有对象引用他了.通常会回收这块内存空间地址 这个时候, 如果主线程也在运行, 刚好有一个变量存放在这个内存地址了, 而你并行的触发了GC, 这时候程序就发生混乱了.