JVM
文章平均质量分 90
小柒7
小渣渣一枚
展开
-
JVM排查案例与工具使用
dump一个进程的堆内存文件。为远程机器的JMX端口。Jinfo 进程id。原创 2022-08-25 16:04:52 · 184 阅读 · 0 评论 -
4、JVM-类文件和字节码指令
文章目录类文件结构概述什么是字节码指令?解读方式文件结构魔数版本号常量池访问标志类索引、父类索引与接口索引集合字段表方法表集合属性表集合 类文件结构 概述 我们所编写的每一行代码,要在机器上运行,最终都需要编译成二进制的机器码 CPU 才能识别。但是由于虚拟机的存在,屏蔽了操作系统与 CPU 指令集的差异性,类似于 Java 这种建立在虚拟机之上的编程语言通常会编译成一种中间格式的文件来存储,比如我们今天要聊的字节码(ByteCode)文件。 什么是字节码指令? Java虚拟机的指令由一个字节长度的、代表着原创 2021-04-11 21:32:18 · 140 阅读 · 0 评论 -
3、JVM-垃圾回收机制与算法
文章目录概述对象死亡算法引用计数算法可达性分析算法优化工具简介引用垃圾清除算法标记-清除算法 概述 说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当作Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收 集原创 2021-04-08 22:01:45 · 165 阅读 · 0 评论 -
5、JVM-字符串常量池StringTable分析
文章目录1.String的基本特性1.2 底层结构1.3 内存分配1.4 字符串拼接操作1.5 intern() 1.String的基本特性 String:字符串,使用一对""引起来表示 String声明为final的, 不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可以比较大小 要点: String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为b原创 2021-04-08 21:04:13 · 198 阅读 · 0 评论 -
2、JVM-运行时数据区域
JVM组成图 1. 运行时数据区域 组成图如下: 其中 本地方法栈、程序计数器、虚拟机栈 为线程私有,堆区和方法区(元空间) 为线程共享**区域 1.1 程序计数器 程序计数器是一块较小的内存区域,可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 当前线程所执行的字节码行号指示器。 每个线程都有一个自己的PC计数器。原创 2021-04-07 21:50:13 · 148 阅读 · 1 评论 -
1、JVM-类加载子系统
JVM-类加载子系统JVM组成图1. 类加载子系统1.1 概述1.2 类加载过程1.2.1 加载1.2.2 验证1.2.3 准备1.2.4 解析1.2.5 初始化总结1.3 类加载器1.3.1 加载器1.3.2 类加载器的关系1.3.3 ClassLoader1.3.4 双亲委托机制 JVM组成图 1. 类加载子系统 1.1 概述 代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行。虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被原创 2021-04-07 20:51:04 · 151 阅读 · 1 评论