JVM的垃圾回收机制

引用

堆被划分为新生代和旧生代,
新生代包含Eden  和 Survivor ,其中Survivor Ratio包括From Space和To Space,Survivor可以手动设置
采用的是copying算法:这个算法是扫描出存活的对象,并复制到一块新的完全未使用的空间中,新生代采用空闲指针的方式来控制GC触发,指针保持最后一个分配的对象在新生代区间的位置,当有新的对象要分配内存时,用于检查空间是否足够,不够就触发GC。当连续分配对象时,对象会逐渐从eden到survivor,最后到旧生代,用java visualVM来查看,能明显观察到新生代满了后,会把对象转移到旧生代,然后清空继续装载,当旧生代也满了之后,就会报outofmemory的异常。
旧生代用于存放经过垃圾回收后仍能存在的对象
目前的收集器主要有三种:串行收集器、并行收集器、并发收集器。

    串行处理器:
    --适用情况:数据量比较小(100M左右);单处理器下并且对响应时间无要求的应用。
    --缺点:只能用于小型应用
    并行处理器:
    --适用情况:“对吞吐量有高要求”,多CPU、对应用响应时间无要求的中、大型应用。举例:后台处理、科学计算。
    --缺点:应用响应时间可能较长
    并发处理器:
    --适用情况:“对响应时间有高要求”,多CPU、对应用响应时间有较高要求的中、大型应用。举例:Web服务器/应用服务器、电信交换、集成开发环境。

你可能感兴趣的:(垃圾回收机制)