JVM专题

JVM类加载

Java里有如下几种类加载器:

  • 引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如 rt.jar、charsets.jar等
  • 扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩展目录中的JAR类包
  • 应用程序类加载器:负责加载ClassPath路径下的类包,主要就是加载你自己写的那些类
  • 自定义加载器:负责加载用户自定义路径下的类包

JVM类加载运行全过程

当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。

通过Java命令执行代码的大体流程如下:
        

        JVM专题_第1张图片

JVM内存模型

    在JDK8中,运行时数据区(内存模型),一共分堆、栈(线程)、本地方法栈、程序计数器、方法区(元空间),方法区(原空间)中有:常量+静态变量+类信息。

JVM对象结构

JVM专题_第2张图片

对象内存分配

new一个对象,判断是否栈内分配,如果是栈上进行分配,如果是否,再判断是否是大对象,如果是,判断OLD,如果否,进行Full GC,然后结束,如果是,判断AGE,如果否,进行S2,判断Minor GC,如果否,转到S1,如果是,结束,

        如果不是大对象,判断TLAB,如果是/否,进行EDEN,再进行Minor GC后续判断流程。

你可能感兴趣的:(技术体系,jvm,java,开发语言)