![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 82
嘿嘿嘿1212
知识在于累计
展开
-
【JVM】垃圾收集器理论算法
JVMGC使用的基础算法原创 2023-03-01 10:34:05 · 249 阅读 · 0 评论 -
【JVM】垃圾标记算法与无用类判断算法
判断垃圾对象算法堆中存放着几乎所有的对象实例,对堆中垃圾对象进行回收的前提就是判断哪些对象已经成为了垃圾对象(不再被任何途经使用的对象)引用计数法给每一个对象添加一个引用计数器当有地方引用他时,计数器加一当引用失效时,计数器减一当计数器为0时,该对象不可能再使用,即为垃圾对象注意:该方法实现简单,效率高,但是因为难以解决对象相互循环引用问题,所以目前主流的虚拟机中并没有选择该算法管理内存。示例相互循环引用:package com.example.demo;/** * @Des原创 2022-08-20 14:32:19 · 191 阅读 · 0 评论 -
【JVM】年轻代进入老年代规则
该机制是为了使多次进行GC后还存在的对象更早进入老年代,至于为什么是大于50%Survivor区的对象,实际上Eden区和Survivor区中很少存在3,4次还幸存对象。Full gc对老年代和年轻代一起回收垃圾,诺Full gc后老年代的可用空间还是无法存放minor gc后需要进入老年代的对象,将会抛出。(单位为字节)设置大对象的大小,如果对象超过设置的大小会直接进入老年代,防止大对象进入年轻代造成重复GC。Survivor区域的50%,此时大于该批对象中的最大年龄的对象,直接进入老年代。......原创 2022-08-14 22:02:00 · 867 阅读 · 0 评论 -
【JVM】三色标记法
原因在CMS等并法收集器,并发标记的过程中需要对对象进行标记,用于区别对象。防止多标,漏标等情况。三色标记三色标记法就是指将GC roots可达性算法分析遍历对象过程中将各个对象,按照”是否访问过“标记成不同的三种颜色(可以理解为类似于成员变量)。黑色表示对象已经被垃圾收集器访问过(扫描过),并且这个对象的所有引用都已经被扫描过,它是安全存活的(不是垃圾对象),如果其他对象引用指向了黑色对象,是无需重新扫描的,黑色对象不可能直接(不经过灰色对象)指向白色对象灰色表示对象已经被立即收原创 2022-08-04 23:51:00 · 3517 阅读 · 8 评论 -
【JVM】JVM常用查看各参数及内存命令【Jps】【Jmap】【Jstack】【Jinfo】【Jstat】
JDK中带有的命令Jps>打印所有java pidJmap用于打印所有被使用的类的数量以及大小jmap -histo [PID]num:序号instances:实例数量bytes:占用空间大小class name:类名称, C代表 char[],S代表short[],I代表int[],B代表byte[],I代表 int[][]打印堆信息jmap -heap [PID]导出堆内存dump文件jmap ‐dump:format=b,file=xxxx.hpr原创 2022-01-19 22:39:00 · 2187 阅读 · 0 评论 -
【JVM】JVM是如何创建对象的与对象头中的结构
JVM对象的加载流程原创 2021-12-31 00:41:04 · 286 阅读 · 0 评论 -
【JVM】JVM内部结构以及堆栈等解释整理
JVMJVM属于JDK下的JRE体系中的一个底层虚拟机。Java的跨平台也是因为JVM虚拟机的存在而存在的特性。#mermaid-svg-rCPEvbMvBIfbCAv2 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-rCPEvbMvBIfbCAv2 .label text{fill:#333}#merma原创 2021-12-28 23:12:46 · 1093 阅读 · 0 评论 -
【JVM】JVM是如何给对象分配内存的
内存分配图 对象栈上分配原创 2021-12-14 22:43:36 · 773 阅读 · 1 评论 -
【JVM】Java类的加载流程以及双亲委派,全盘托管,以及如何打破双亲委派机制
1.JVM基础生命周期流程图classLoader.loadClass()的类加载(除引导类,所有类都一样)加载:通过IO查找读取磁盘上的字节码文件,在调用到类才进行加载(调用类的方法,或者new 一个实例对象),会在内存创建一个Class对象,在方法区中代表这个类(用于获取该类的各种数据)。验证:校验字节码文件是否符合规范。准备:将类中的非最终静态变量分配内存地址,并赋予类型默认值(根据类型给予,与实际赋值无关)。最终静态变量会直接进行赋值操作,无需进行类型初始值赋予。解析:将符号引用替换为直原创 2021-06-12 18:21:15 · 1725 阅读 · 0 评论