🛸~~ 🚁🚁🚁🛩️🛩️🛩️~|

n1ce2cv

园龄:5年2个月粉丝:4关注:1

随笔分类 -  Java / JVM

类加载机制
摘要:类的生命周期 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺
30
0
0
对象存在位置
摘要:对象优先在 Eden 分配 堆分为新生代和老年代,新生代用于存放使用后就要被回收的对象(朝生夕死),老年代用于存放生命周期比较长的对象。 创建的大部分对象,都属于生命周期较短的对象,所以会存放在新生代。新生代又细分 Eden、From Survivor、To Survivor,对象会优先在 Eden
23
0
0
垃圾收集器
摘要:JVM 的垃圾收集器主要分为两大类:分代收集器和分区收集器,分代收集器的代表是 CMS,分区收集器的代表是 G1 和 ZGC 分代收集器 CMS 以获取最短回收停顿时间为目标,采用“标记-清除”算法,分 4 大步进行垃圾收集,其中初始标记和重新标记会 STW,JDK 1.5 时引入,JDK9 被标记
32
0
0
垃圾回收机制
摘要:垃圾回收的概念 垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存爆掉。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。 垃圾判断算法 引用计数算法 引用计数算法(Reachability Counting)是通过在
12
0
0
运行时数据区
摘要:Java 源代码文件经过编译器编译后会生成字节码文件,经过加载器加载完毕后会交给执行引擎执行。在执行的过程中,JVM 会划出来一块空间来存储程序执行期间需要用到的数据,这块空间一般被称为运行时数据区 根据 Java 虚拟机规范的规定,运行时数据区可以分为以下几个部分: 程序计数器(Program C
35
0
0
字节码指令
摘要:加载与存储指令 public int add(int a, int b) { int res = a + b; return res; } 字节码指令 public int add(int, int); descriptor: (II)I flags: (0x0001) ACC_PUBLIC Cod
32
0
0
JVM栈帧
摘要:Java 的源码文件经过编译器编译后会生成字节码文件,然后由 JVM 的类加载器进行加载,再交给执行引擎执行。在执行过程中,JVM 会划出一块内存空间来存储程序执行期间所需要用到的数据,这块空间一般被称为运行时数据区。 栈帧(Stack Frame)是运行时数据区中用于支持虚拟机进行方法调用和方法执
16
0
0
javap和字节码
摘要:javap 字节码的基本信息 public class Test { private int age = 10; public int getAge() { return age; } } 在 class 文件的同级目录下输入命令 javap -v -p Test.class 来查看一下输出的内容
23
0
0
JVM类文件结构
摘要:.java源文件 package test.JVM; public class Test { public static void main(String[] args) { System.out.println("haha"); } } 十六进制查看.class文件 魔数 第一行中有一串特殊的字符
19
0
0
认识JVM
摘要:类加载器 运行时数据区 执行引擎 执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令 JVM架构图
10
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起