对jvm的深入理解及GC垃圾回收机制:

java的jvm内存结构主要分为三大块: 堆内存, 占内存, 方法区. 

堆内存:   是JVM中最大的一块内存地址, 他主要是由年轻代,年老代,持久代组成, 所有new出来的对象都放在该内存里.

栈内存:   暂存数据的地方, 每个线程都包含一个栈区, 栈存放在一级缓存中, 存取速度快, 栈中只保存基础的数据类型和自定义对象的引用,每个栈中的数据都是私有的, 其他栈不能访问, 

方法区: 存放要加载类的信息(如类名,修饰符等), 静态变量, 构造函数, final定义的常量, 类中的字段和方法等信息.

垃圾回收机制:
    Gcroot:被GCroot引用的对象才可以存活
        1). 虚拟机栈中引用的对象
`       2). 方法区中的类静态属性引用的对象
        3). 方法区中的常量引用的对象
        4). 本地方法栈中JNI(Native方法) 引用的对象
    垃圾回收算法:
        Marking-Sweep(标记-清除法)  没有被引用的直接标记,然后把标记的删除.(会有空间的浪费)
        Marking-Compat(标记-整理法) 先整理不删除,将引用的和空闲的分开,统一删除(没有空间浪费)                                                        复制算法: 将内存划分为大小相等的两块, 当一块的内存用完了, 就把还存活的对象复制到另一块,然后将之前的那一块清理掉.  (浪费内存太多, 对年老代的使用,效率低)                                                                                                                                               分代收集算法: (当前商业虚拟机都采用这个)                                                                                                                                             根据对象存活中中的不同,将内存分为几块: 一般为新生代,年老代, (新生代用复制算法, 年老代用的是整理算法进行回收)                                               

    分代:
        对象的生命周期不同所以会分代:
            新生代(Minor GC):1-8  (s0-s1反复) 频率高
            老年代(Major GC):9  频率低
    常见的回收器:
        Serial Garbage Collector: 单线程GC;
        Parallel Garbage Collector: 多线程GC
        CMS Garbage Collector: 多线程GC;
        G1 Garbage Collector: jdk7引进GC.多线程,高并发.低暂停,逐步取代CMS GC;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值