JVM
人类幼崽养成记
知识分享,拥抱开源
展开
-
JVM垃圾回收
GC是垃圾回收, 垃圾就是无任何对象引用的对象,回收占用的内存空间而非对象本身因为程序不断运行,不断有新的对象产生,为了避免无用对象的存在从而占用内存空间导致内存不足,因此要进行回收当新生代满时触发Young GC,当老年代满时触发Full GC/Major GC4种引用状态分为强引用、软引用、弱引用、虚引用4种,这4种引用强度依次减弱GC的两种标记方法1.引用计数法引用计数算法实现简单,效率高;不能解决循环引用的问题,导致内存泄漏对于一个对象A,只要有任何一个对象引用.原创 2021-12-08 16:49:03 · 189 阅读 · 0 评论 -
JVM 组成部分
JVM可以分为3大部分:类加载器,运行时数据区和执行引擎。类加载器负责加载.class 文件运行时数据区负责存放.class 文件,分配内存。运行时数据区又分为5个部分:方法区:负责存放.class 文件,方法区里有一块区域是运行时常量池,用来存放程序的常量。 堆:分配给对象的内存空间。 java虚拟机栈:每个线程独享的内存空间。 本地方法栈:本地方法独享的内存空间。 程序计数器:记录线程执行的位置,方便线程切换后再次执行。执行引擎:.class文件是jvm的一套指令集规范,并不能直接原创 2021-12-08 15:23:09 · 596 阅读 · 0 评论 -
类加载器分类
类加载器干就是将对应类的.class文件中的二进制流加载到内存空间类加载器的分类1.启动类加载器2.扩展类加载器3.应用程序类加载器委托机制:双亲委派模型当一个类加载的过程中,它首先不会去加载,而是委托给自己的父类去加载,父类又委托给自己的父类。因此所有的类加载都会委托给顶层的父类,即Bootstrap Classloader进行加载,然后父类自己无法完成这个加载请求,子加载器才会尝试自己去加载。使用双亲委派模型,Java类随着它的加载器一起具备了一种带有优先级的层次关系,通过这种层原创 2021-12-08 14:40:41 · 564 阅读 · 0 评论 -
JVM 类加载机制
类加载主要分为5个过程:加载、验证、准备、解析、初始化,其中验证、准备、解析统称为连接过程。JVM把class文件加载到内存,并对数据进行校验、准备、解析、初始化,最终形成JVM可以直接使用的Java类型的过程。加载:将class字节码文件加载到内存中,并将这些数据转换成方法区中的运行时数据(静态变量、静态代码块、常量池等),在堆中生成一个Class类对象代表这个类(反射原理),作为方法区类数据的访问入口。验证:主要目的是为了确保 Class 文件的字节流中包含的信息是否符合当前虚拟机的原创 2021-12-08 14:26:43 · 515 阅读 · 0 评论