![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 90
null_zhouximin
这个作者很懒,什么都没留下…
展开
-
JVM-调优工具详解及调优实战
JVM-调优工具详解及调优实战调优工具jpsjmapjstackjinfojstatJVM运行情况预估实战:解决Full GC卡顿的思路调优工具jps查看正在运行java的进程jmapjmap -histo 30340 #查看历史生成的实例jmap -histo:live 30340 #查看当前存活的实例,执行过程中可能会触发一次full gcnum:序号instances:实例数量bytes:占用空间大小class name:类名称,[C is a char[],[S i原创 2021-01-25 02:04:26 · 440 阅读 · 0 评论 -
JVM-HSDB使用
这里写目录标题调用HSDB二级目录三级目录调用HSDBsudo java -cp /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/sa-jdi.jar sun.jvm.hotspot.HSDB二级目录三级目录原创 2021-01-24 23:08:08 · 324 阅读 · 0 评论 -
JVM-执行引擎
JVM-执行引擎执行引擎概述执行引擎位置执行引擎是什么执行引擎工作过程Java 代码编译和执行过程解释执行和即时编译解释器和编译器JIT 编译器结论编译对象与触发条件热点探测技术方法调用计数器热度衰减回边计数器C1 C2 编译器比较分层编译策略总结Graal 编译器执行引擎概述执行引擎位置执行引擎属于JVM的下层,里面包括:解释器、即时编译器、垃圾回收器执行引擎是什么执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机原创 2021-01-24 22:47:28 · 338 阅读 · 0 评论 -
JVM-底层之类加载
JVM-底层之类加载Klass 模型类的加载过程加载验证准备解析初始化Klass 模型klass模型类的继承结构由上面图可以看出:类的元信息是储存在原5空间里面的在JVM中,普通类对应的是instanceKlass类的实例。InstanceMirrorKlass:用于表示java .lang.Class,java 代码中获取到Class对象,实际上就是这个C++ 类的实例。储存在堆区。InstanceRefKlass:用于表示java/lang/ref/Reference类的子类Insta原创 2021-01-12 12:48:36 · 195 阅读 · 0 评论 -
JVM-类加载器
JVM-类加载器类与类加载器双亲委派模型三层类加载器双亲委派模型工作过程破坏双亲委派沙箱安全类与类加载器类加载器是用来加载类的,对于任意一个类,都必须由类和加载他的类加载器来确定它的唯一性。对于每一个类加载器,都有其独立的类名称空间。也就是说,要表明两个类是否一样的前提是是否由同一个类加载器加载。双亲委派模型在虚拟机的角度上看,只有两种不同的类加载器。一种是c++实现的,另一种是java 实现的,独立于jvm 全部继承java.lang.ClassLoader.在java开发人员的角度上看,是保持原创 2021-01-13 12:00:48 · 384 阅读 · 1 评论 -
JVM-Class文件解析
JVM-Class文件解析Class类文件的结构魔数,版本号常量池大小,常量池访问标志类名 父类名,接口数字段表集合方法表集合Class类文件的结构了解class类文件的必要性(了解class文件,可以了解很多在jvm上运行的语言)Class文件格式* 被解析的java文件和class文件。public class Test { private int n; int inc() { n = n+1; return n; }}ca原创 2021-01-14 02:04:34 · 219 阅读 · 1 评论 -
jvm-java内存区域
jvm-java内存区域jvm内存模型运行时数据区域HotSpot虚拟机对象jvm内存模型运行时数据区域程序计数器它是一块较小的内存空间,它可以看作是当前线程所执行的字节码行号指示器。(线程私有的)java虚拟机栈线程私有虚拟机栈是描述java方法执行的线程内存模型,每一个方法被执行的时候,java虚拟机都会创建一个栈帧用于存放局部变量表 ,操作数栈,动态链接,方法出口。每一个方法被调用到执行完毕的过程,就对应着一个栈帧进栈到出栈的过程。本地方法栈作用和java虚拟机栈类似,只是服务于原创 2021-01-14 18:39:16 · 180 阅读 · 0 评论 -
聊聊jvm中的String
聊聊jvm中的String常量池三种常量池实验拼接字符串底层是如何实现的常量池三种常量池Class文件中的常量池:Constant pool中运行时常量池:是在类加载器将Class文件中的常量池解析后存放在方法区中的InstanceKlass类下的ConstantPool* _constants中。字符串常量池:这是堆下的一个数据结构 String Pool,由底层HashTable实现的,一个 key-value的存储形式通过String的内容+长度生成Hash值。将Hash转为keyV原创 2021-01-16 02:53:57 · 136 阅读 · 0 评论 -
JVM-虚拟机栈
字节码执行引擎运行时栈帧结构局部变量表操作数栈动态连接方法返回值方法调用解析运行时栈帧结构栈帧用于存放局部变量表 ,操作数栈,动态链接,方法出口。每一个方法被调用到执行完毕的过程,就对应着一个栈帧进栈到出栈的过程。执行引擎所运行的所有字节码指令都只针对当前栈帧(栈顶)操作。局部变量表局部变量表是一组变量值的存储空间,用来存放方法参数和方法内定义的局部变量。局部变量表的容量以变量槽为最小单位,分配规则:如果是实例方法,那么0 index 存的是this其余参数安装顺序依次分配根据方法体内部定义原创 2021-01-18 15:06:08 · 208 阅读 · 0 评论 -
JVM-堆
JVM-堆堆的核心概述内存细分年轻代和老年代对象分配空间TLAB堆空间中常用的参数空间分配担保对象不一定都在堆上逃逸分析栈上分配同步省略分离对象总结堆小结堆的核心概述一个JVM实例只存在一个堆内存。在JVM启动的时候就已经创建了,也确定了空间大小,可以利用-Xms 和-Xmx设置最大最小空间,通常设置一样,目的是能够在GC后不需要重新分隔计算堆区的大小对可以处于物理上不连续但是逻辑上是连续的。所有线程共享一个堆,在这里可以划分线程私有的缓冲区TLAB。内存细分Jdk8 之后堆的逻辑上分为三原创 2021-01-19 10:17:46 · 120 阅读 · 0 评论 -
JVM-对象的实例化内存布局与访问定位
JVM-对象的实例化内存布局与访问定位对象实例化对象创建的方式对象的创建步骤对象的内存布局对象头实例数据对齐填充对象的访问定位直接内存概述直接内存与 OOM对象实例化对象创建的方式new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器,并且权限必须为 publicConstructor的newInstance(Xxxx):反射的方式,可以调用空参的,或者原创 2021-01-19 21:34:52 · 280 阅读 · 0 评论 -
JVM-垃圾回收
JVM-垃圾回收什么是垃圾Java 垃圾回收机制GC 的作用域垃圾回收算法什么是垃圾垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出Java 垃圾回收机制自动内存管理的优点自动内存管理,无需开发人员手动参与内存的分配与回收,这样降低内存泄漏和内存溢出的风险没有垃圾回收器,java也会和cpp一样,各种悬原创 2021-01-22 13:35:17 · 127 阅读 · 0 评论 -
JVM-垃圾收集器
JVM-垃圾收集器对象内存分配对象优先Eden区分配大对象直接进入老年代空间担保垃圾回收器评估 GC 的性能指标HotSpot的算法细节实现跟节点枚举安全点安全区记忆集与卡表写屏障并发的可达性分析Serial 回收器(单线程)PaeNew 回收器Parallel 回收器:吞吐量优先CMS 回收器:低延迟如何选择垃圾回收器G1 回收器:区域化分代式简介Region算法介绍对象内存分配对象优先Eden区分配大多情况下,对象在新生代Eden区分配(如果没有足够空间进行分配,将发起Minor GC)Mi原创 2021-01-24 11:02:03 · 171 阅读 · 0 评论 -
JVM-G1垃圾收集器
JVM-G1垃圾收集器和ZGC收集器G1收集器(-XX:+UseG1GC)Region 分区G1 过程Young GCMixed GC特点G1的垃圾回收分类参数设置优化建议G1收集器(-XX:+UseG1GC)G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.Region 分区G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标是不超过2048个Region原创 2021-01-24 11:02:41 · 117 阅读 · 0 评论