zoukankan      html  css  js  c++  java
  • GC垃圾回收

    永久代不在堆内存里

    Java堆内存(heap):
        --是 JVM 用于分配 Java 对象的内存,包含活动对象和不可用对象 
        --堆大小通常是在服务器启动时使用 java 命令中的 –Xms(最小) –Xmx(最大)标志来定义。
    Permanent区:
        --指内存的永久保存区域
        --是Sun JDK和HP JDK用来加载类(class)和Meta信息的专门的内存区
     
     
     
    整块堆区域分为Young Generation、Tenured Generation
    Young区又分为:Eden、Survivor Space
     
     
     
    垃圾回收(GC)的产生过程
         1)新生成的对象在Eden区完成内存分配
         2)当Eden区满了,再创建对象,会因为申请不到空间,触发minorGC,进行young(eden+1survivor)区的垃圾回收。(为什么是eden+1survivor:两个survivor中始终有一个survivor是空的,空的那个被标记成To Survivor)
         3)minorGC时,Eden不能被回收的对象被放入到空的survivor(也就是放到To Survivor,同时Eden肯定会被清空),另一个survivor(From Survivor)里不能被GC回收的对象也会被放入这个survivor(To Survivor),始终保证一个survivor是空的。(MinorGC完成之后,To Survivor 和 From Survivor的标记互换)
         4)当做第3步的时候,如果发现存放对象的那个survivor满了,则这些对象被copy到old区,或者survivor区没有满,但是有些对象已经足够Old(通过XX:MaxTenuringThreshold参数来设置),也被放入Old区
         5)当Old区被放满的之后,进行完整的垃圾回收,即 Full GC
         6)Full GC时,整理的是Old Generation里的对象,把存活的对象放入到Permanent Generation里。
     
     
     
     
     
  • 相关阅读:
    ZOJ 1060 Count the Color
    POJ 3321 Apple Tree
    数字三角形模型
    静态维护区间加等差数列的求和问题
    Codeforces Round #622 (Div. 2)-题解
    算法竞赛进阶指南0x00-算法基础
    Codeforces Round #628 (Div. 2)
    Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round)
    Codeforces Round #621 (Div. 1 + Div. 2)
    Codeforces Round #620 (Div. 2) 题解
  • 原文地址:https://www.cnblogs.com/lnas01/p/5354116.html
Copyright © 2011-2022 走看看