java虚拟机结构

本文详细介绍了JVM的内存结构,包括新生代、老年代和永久代,以及不同世代的垃圾回收算法,如引用计算法、复制法、标记-清除法和标记-整理法。同时,讲解了垃圾收集器的作用,如ScavengeGC和FullGC,以及HotSpot虚拟机的七大分代收集器。此外,讨论了JVM优化策略和常用的JVM监控工具,如jps、jstat等。文章最后提到了G1收集器作为现代JVM的优化选择。
摘要由CSDN通过智能技术生成

jvm结构

jvm栈:新生代(Eden, From, To),老年代,永久代

jvm垃圾回收算法:

  1. 引用计算法,无法处理循环引用

  2. 复制法,需要2倍空间

  3. 标记-清除法,会暂停整个应用,同时会产生内存碎片

  4. 标记-整理法,基于标记-清除法和复制法,不会产生内存碎片

垃圾收集器:Scavenge GC(次收集,发生在新生代,需要速度快、效率高的算法)和Full GC(全收集,老年代)

老年代对象大部分是Minor GC过程中从新生代进入老年代。full GC的速度一般会比Minor GC慢10倍以上。当来年代内存不足或者显示调用System.gc()方法时,会触发Full GC

HotSpot虚拟机7大分代收集器:

young generation:

  1. serial,串行收集器,会STW stop the world,让工作线程暂停,使用复制算法

  2. parnew,并行收集器,是serial的多线程版本,当老年代使用了CMS后parnew就是新生代的默认收集器,存在线程切换开销,收集线程数和CPU数量相同可用-XX:ParallelGCThreads=<N>参数控制GC线程数,关注尽可能缩短垃圾收集时间

  3. parallel scavenge,也是并行多线程收集器,但是关注点是系统吞吐量,系统吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)

old generation:

       4. CMS(concurrent mark sweep),可以和serial、parnew配合使用,concurrent:并发,可以和用户线程一起工作,一款真正意义上的并发收集器,现在主流互联网企业线             上选用的仍然是CMS,以最短回收停顿时间为目标的收集器,4个步骤:初始标记->并发标记->重新标记->并发清除(没有压缩,初始和重新标记阶段仍然会STW)

       5. serial old,是单线程收集器,使用标记-整理算法,可以跟年轻代的所有收集器一起使用

       6. parallel old,只能和parallel scavenge一起使用(parallel:并行,不能跟用户线程一起工作)

通用收集器:

       7. G1(gabage first),分区收集器

JVM优化:

  1.  选择jvm的版本

  2.  手动指定堆区大小

  3. 垃圾收集器的选择

jvm小工具:

    jps:

    jstat

    jinfo

    jmap

    jcmd

    jconsole

    jvisualvm:jdk中最强大的运行监视和故障处理工具,可以监视内存泄漏、跟踪垃圾回收、执行时内存分析、CPU分析、线程分析...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值