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

    Garbage Collection,GC(垃圾回收机制) :回收垃圾对象所占的空间供新的对象使用

    好处:防止内存泄露,有效的使用空闲的内存

    PS:内存泄露(不再会被使用的对象的内存不能被回收,就是内存泄露)

    分代的垃圾回收算法(Generational Collector)
    一、基于:不同的对象的生命周期是不一样的
    (1)年轻代
    1.1 所有新生成的对象首先都放在年轻代内存中。年轻代的目标就是尽可能快速的手机掉那些生命周期短的对象。
    1.2 年轻代内存分为一块较大的Eden空间和两块较小的Survior空间,每次使用Eden和其中的一块Survior.
    1.3 当回收时,将Eden和Survior中还存活的对象一次性拷贝到另外一块Survior空间上,最后清理Eden和刚才用过的Survior空间
    (2)年老代
    1.1 在年轻代经历了N次GC后,仍然存活的对象,就会被放在老年代中。因此可以认为老年代存放的都是一些生命周期较长的对象
    1.2 当老年代内存满时,触发Full GC
    (3)持久代
    1.1 用于存放静态文件,如Java类、方法等
    二、GC的执行机制
    (1)Scavenge[ˈskævɪndʒ] GC
    当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC
    作用:对Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区
    (2)Full GC
    对整个堆进行整理,包括Young、Tenured和Perm,速度较Scavenge GC慢
    1.年老代(Tenured)被写满
    2.持久代(Perm)被写满
    3.System.gc()被显示调用
    三、JAVA依然会发生内存泄漏
    1、数据库连接没有关闭
    2、静态集合类HashMap、Vector引起内存泄漏(将所申请的对象放入一个Vector 中,如果仅仅释放引用本身(o=null),那么Vector 仍然引用该对象,应该将Vector对象设置为null)

    博客园:http://www.cnblogs.com/zhuziyu/
    Copyright ©2018 不是植物
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    从传统BI报表系统上重构指标库
    autoload魔术方法的妙用
    kerberos委派详解
    一篇文章弄懂session的两种存储方式
    一款专门针对高质量女性的易语言钓鱼样本简单分析
    长城杯线上赛wp
    羊城杯WP
    ICMP隧道通信原理与通信特征
    浅析栈溢出遇到的坑及绕过技巧
    从本地到WordPress代码注入
  • 原文地址:https://www.cnblogs.com/zhuziyu/p/8603579.html
Copyright © 2011-2022 走看看