JVM架构体系及GC命令有哪些

发布时间:2021-10-23 16:01:25 作者:柒染
来源:亿速云 阅读:172

这篇文章给大家介绍JVM架构体系及GC命令有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

JVM架构体系及GC命令有哪些

1. Overview
2. JVM架构体系
   1) 垃圾回收
       - 对象存活性判断
       - 垃圾回收算法
       - 垃圾回收器(回收算法的具体实现)
   2) 类装载子系统
       - 启动类加载器
       - 扩展类加载器
       - 应用程序类加载器
       - 自定义类加载器
   3) 执行引擎
       - 解释器
       - 即时编译器
   4) 运行时数据区
       - 堆Heap
       - 方法区
       - 程序计数器
       - 虚拟机栈
       - 本地方法栈
3. 垃圾回收器开启命令
4. Reference

Overview

Java虚拟机Java virtual machine(JVM) 是物理机器的软件实现。java编译器javac将源码文件.java编译成字节码文件.class,然后这个字节码文件.class被放到JVM中,装载并执行字节码文件.class。JVM架构图如下。

JVM架构体系及GC命令有哪些

JVM Architecture

JVM架构体系

  1. 垃圾回收(garbage collection):负责回收堆内存heap中没有被使用的对象

判断对象是否存活,可达性检测

    1. 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1。任何时刻计数器为0的对象就是不可能再被使用的

    2. 根搜索算法:通过一系列名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连时,就证明此对象是不可用的

JVM架构体系及GC命令有哪些

垃圾回收算法

  1. 标记-清除算法Mark-Sweep:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象

  2. 复制算法Copying:它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉

    1. 可用内存缩小为原来的一半

    2. 每次收集时,所有的标记对象都要被拷贝,从而导致一些生命周期很长的对象被来回拷贝多次,消耗大量的时间 ->分代回收来解决这个问题

  3. 分代回收算法Generational Collecting:根据对象存活周期的不同将内存划分为几块

    新生代:内存分为一块较大的Eden空间和两块较小的Survivor空间。新建object在Eden,Eden满时触发YGC,Eden中存活对象被移动到S0区,清空Eden;等Eden再满再YGC,Eden和S0中的存活对象被复制到S1(复制算法保证了S1中来自Eden和S0两部分的存活对象占用连续的内存空间,避免了碎片化);清空Eden和S0。下一轮的时候S0和S1交换角色,如此循环往复。如果对象的复制次数达到15次,该对象就会被送到老年代。

    老年代:对象存活率高

回收器类型

  1. NEW

  2. OLD/tenured

  3. NEW and OLD


JVM架构体系及GC命令有哪些

类装载子系统(classloader sub-system):定位和导入二进制class文件,校验导入类的正确性,为类变量分配并初始化内存,解析符号引用

JVM架构体系及GC命令有哪些

执行引擎(execution engine):执行classloader中的方法指令

JVM架构体系及GC命令有哪些

运行时数据区(runtime data areas):JVM运行时需要从整个计算机内存中划出一块内存区域存储jvm需要用到的东西

JVM架构体系及GC命令有哪些

垃圾回收器开启命令

Command line新生代gc模式老年代gc模式
-XX:+UseSerialGCserial串行回收器serialOld串行回收器
-XX:+UseParNewGCparNew并行回收器default
-XX:+UseParallelGCparallel并行回收器default
-XX:+UseParallelOldGCdefaultparallel并行回收器
-XX:+UseConcMarkSweepGCdefaultCMS并行回收器
-XX:+UseG1GCG1回收器G1回收器

根据上表新生代与老年代的gc模式互为搭配一起为垃圾回收器服务。

关于JVM架构体系及GC命令有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. JVM和GC关键参数
  2. MySQL架构体系知识点有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

gc jvm

上一篇:Namespace机制是什么

下一篇:如何进行JConsole和JVisualJVM的入门

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》