美文网首页
Java JVM and GC

Java JVM and GC

作者: qingshuiting | 来源:发表于2019-03-06 11:26 被阅读0次

Java JVM and GC

类加载

方法区

内容:类信息和类静态变量,常量池

类信息:非常多

主要使用的类信息:1. 类型的字段信息 2. 类型的方法信息

Heap

Java的对象和数组申请的空间都是从Heap中分配的。(引用是在栈中)

所有的线程都是共享一个Heap的。

Stack

保存基本数据类型和自定义类型的引用。但是对于包装类型:Boolean,Long等存放于Heap中。

每一个线程都有自己的stack。

本地方法Stack

用于存储本地方法的局部变量表,和JVM stack功能类似

程序计数器

每一个线程都有独立的程序计数器

JVM 常量池

存在在方法区中,存储的是常量的引用

GC 内容

Young generation

新生代空间较小,被分为3个区域:Eden,From,To三个区域。

创建的对象在Eden区,Eden区域GC后存活对象存放在幸存者空间(存放在同一个幸存者区间);当一个幸存者空间饱和,还存活的幸存者会被移动到另一个幸存者空间,然后清零另一个幸存者空间。如果被一定多次的对象,就会被移动到老年代。

这里发生的GC 为Minor GC。

Old generation

大部分内容都是由于新生代移动过来的。

这里发生的GC为Major GC或者Full GC。

Permanent generation

方法区,保存常量和字符串常量。

GC 算法

根搜索算法:

类似一个图遍历,能够从root遍历到的节点就是不会被GC。

标记清除算法:

扫描,存活对象进行标记,不存活对象进行清理。

会造成内存的碎片化。

复制算法

两个空间:活动区间 or 空闲区间

把存活对应复制到空间区间中。一次性回收所有的活动区间中的内容。

标记-整理算法

类似于标记-清除,只是在清除不存活的对象以后,把存活对象进行移动,从而使得内存碎片化降低。

算法的使用

一般新生带使用 复制算法,老生带一般使用 标记-整理算法。

相关文章

  • JVM系列(五):Java GC 分析

    Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garbag...

  • jvm系列:Java GC 分析

    Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garbag...

  • jvm系列(五):Java GC 分析

    ​Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garba...

  • java(内存和gc)

    JVM内存和gc机制JVM内存 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

  • JVM

    JVM(1):Java 类的加载机制 JVM(2):JVM内存结构 JVM(3):Java GC算法 垃圾收集器 ...

  • JVM垃圾回收基础

    原文链接:https://www.pdai.tech/md/java/jvm/java-jvm-gc.html[h...

  • JVM结构、GC工作机制详解

    JVM和GC,是Java的底层虚拟机和垃圾回收器,理解JVM和GC,对于我们理解Java很有帮助。在面试的过程中,...

  • 【Java面试】什么是JVM内存分配担保机制?

    JVM内存分配担保机制,如果想要理解透彻,需要先知道,Java GC是什么时候发生的? Java GC When ...

  • 四级考试(1)

    1.简要阐述JVM的CMS GC算法和JVM的G1 GC算法的基本原理。 gc就是java的垃圾回收机制(gaba...

网友评论

      本文标题:Java JVM and GC

      本文链接:https://www.haomeiwen.com/subject/hyaotqtx.html