JVM
文章平均质量分 75
lin_x_t
阿巴阿巴阿巴
展开
-
JVM类加载、类加载机制
一、类文件结构① 魔数:确定这个文件是否为一个能被虚拟机接收的class文件。② class文件版本:class文件的版本号,保证编译正常的执行③ 常量池:存放两大常量(字面量和符号引用)④ 访问标志:标志用于识别一些类或者接口层次的访问信息,即包括访问修饰符(public、private,protected,default)、类的类型(abstract,interface)、final等⑤ 当前类索引,父类索引:类索引用于确定这个类的全限定类名,父类索引用于确定这个类的父类的全限定类名⑥ 接口原创 2021-07-14 16:30:09 · 294 阅读 · 2 评论 -
Java对象是否可回收、判断方法
Java对象是否可回收一、对象可回收的条件1、对象的所有实例都已经被回收,堆中已经不存在对象的任何实例2、加载该类的classLoader已经被回收3、该类对应的对象在任何地方都没有被引用,也无法在任何地方通过发射访问该类当一个对象满足了这三个条件的时候,也可能不可回收,若该对象满足这三个条件,在垃圾回收之前,该对象执行了finalize方法,有可能让对象再次被引用,从而实现自救,不被当成垃圾回收。但是每一个对象只能自救一次,如果该对象执行了一次finalize方法,则下次就不能再次被执行了。原创 2021-07-13 16:59:59 · 2102 阅读 · 0 评论 -
JVM垃圾收集器
JVM垃圾收集器新生代收集器(serial、ParNew、parallel scavenge)老年代收集器(serial old,parallel old 、CMS)整体(G1)1、serial收集器串行收集器,单线程收集,每次收集过程都会(stop the world),即收集过程中会暂停用户的线程工作,直到他收集结束,才会继续用户线程运行。采用收集算法:新生代采用复制算法老年代采用标记整理算法2、ParNew收集器ParNew收集器是serial收集器的多线程版本,即多线程进行垃原创 2021-07-13 16:22:47 · 303 阅读 · 0 评论 -
JVM垃圾回收算法
JVM垃圾回收算法一、标记-清除算法标记清除算法,首先标记可回收的对象,然后对标记的对象进行清除。缺点:会产生大量的空间碎片,不利于内存的更好利用二、复制算法将内存空间一分为二,每次使用其中的一半,每次进行垃圾回收的时候,将存活的对象复制到另一边的内存区域,然后清除掉原先内存中的未存活对象缺点:每次都将内存一分为二,可用空间少优点:不会产生空间碎片三、标记-整理算法与标记清除算法类似,不过该算法是标记存活的对象,后续不是直接清除,而是将标记的存活对象移动到一端,然后清除掉端边界以外的可原创 2021-06-15 22:23:08 · 152 阅读 · 0 评论 -
JVM内存区域(运行时数据区)
JVM内存区域(运行时数据区)根据JVM规划,运行时的内存区域划分为五个部分,分别是堆、方法区、程序计数器、虚拟机栈、本地方法栈,其中在jdk1.8之后方法区被移除,取而代之的是元空间(直接内存)这是jdk1.6的示意图这是jdk1.8的示意图下面介绍一下这五部分的主要信息一、堆(线程共享)堆是被所有线程共享的一块内存区域,在虚拟机启动的时候创建,主要用于存放对象的实例,堆的内存大小可通过参数-Xmx 和-Xms 来控制,当堆中没有内存分配个实例,就会出现out of memoryError原创 2021-06-15 22:05:46 · 233 阅读 · 1 评论