JVM原理及GC

1. JVM原理

  JVM简介:JVM, 中文名是Java虚拟机, 是一个虚拟的机器,用来模拟通用的物理机。 JVM是一个标准,一套规范,  规定了.class文件在其内部运行的相关标准和规范。

  类加载器:从JVM外部以二进制字节流的方式加载到JVM中。

  JVM本身有至少三种类加载器:BootStrapClassLoader(根类加载器,C++实现, 加载位于jre/lib/rt.jar)、ExtensionClassLoader(扩展类加载器, 主要用于加载jre/lib/ext/下的jar)、AppClassLoader(加载classpath环境变量所指定的class)

  JVM类加载机制:自下而上检测,自上而下加载

  注意:BootStrapClassLoader加载的类,getClassLoader()返回null

  类加载过程:加载、连接(验证、准备、解析)、初始化

  JVM运行时数据区:

    程序计数器:当前线程执行字节码指令的指示器

    虚拟机栈:和计数器一样,也是线程私有的,生命周期同线程一致。每个方法在执行时,都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

    本地第方法栈:此栈和JVM栈作用非常类似, 不同在于本地方法栈为虚拟机使用到的Native方法服务    

    Java堆:是JVM管理内存中最大的一块。被所有线程共享一块区域。堆是GC垃圾收集器管理的主要区域。

    方法区:用来存储已被虚拟机加载的类信息, 常量、静态变量、即时编译器编译后的代码等数据。

2. GC垃圾收集

原文地址:https://www.cnblogs.com/wuan90/p/11242224.html