JVM
文章平均质量分 71
linsy`
世上并无常青树,心中不负便胜朝朝暮暮
展开
-
对象内存布局与对象头
在Hotspot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头、实例数据、对齐填充。原创 2023-08-19 19:23:05 · 233 阅读 · 0 评论 -
JVM垃圾回收算法与概念
在GC执行垃圾回收之前需要判定那些是存活对象,那些是死对象(当一个对象已经不再被任何存活的对象继续引用时,宣判死亡)。 - 引用计数器的属性,用于记录对象被引用的情况。对于一个对象A,只要任何一个对象引用了A, 则A的计数器就加1,当引用失效时计数器就减1.当对象A的计数器为0时即表示对象A不可能被使用,可回收。优点:实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟。缺点: - 它需要单独的字段存储计数器,增加了储存空间开销。 - 每次赋值都需要重新更新计数器,增加时间开销 - 存在**无原创 2022-10-23 21:05:20 · 175 阅读 · 0 评论 -
JVM垃圾回收器
GC分类与性能指标吞吐量:运行用户代码时间栈总运行时间的比例。(程序运行时间 / 程序运行时间 + 内存回收时间)暂停时间:执行垃圾收集时,程序的工作线程所暂停的时间。内存占用:java堆区所占用的内存大小。原创 2022-10-23 21:03:38 · 205 阅读 · 0 评论 -
JVM类的加载过程与类加载器
跨平台语言(write once, run anywhere)前端编译器()的主要任务就是负责。javac编译四步骤:1. 词法解析、2. 语法解析、3. 语义解析、4. 生成字节码类的成员变量赋值:1、默认初始化 2、显式初始化 /代码块初始化 3、构造器初始化 4、有了对象之后(对象.属性或对象.方法)对成员变量赋值。原创 2022-10-23 21:03:01 · 252 阅读 · 0 评论 -
JVM执行引擎
简介:JVM执行引擎充当了将高级语言翻译为机器语言的译者。将字节码指令解释/编译为对应平台上的本地机器指令。工作过程。对字节码采用逐步解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。就是虚拟机将源代码直接编译成和本地机器平台的相关语言。JIT是将所有的字节码编译完才开始运行。后期执行速度快。现在JVM在执行java代码时,通常都会将解释执行与编译执行二者结合起来进行。(半编译半解释型语言)原创 2022-09-17 20:02:02 · 176 阅读 · 0 评论 -
JVM对象实例化内存布局与访问定位
栈中对象引用指向堆中对象实体数据,堆中对象实体数据含有指向方法区中对象类型数据的指针。缺点:需要开辟内存空间给句柄、多一个访问数据环节,速度较慢。JVM怎么通过栈帧中的对象引用访问其它内部对象实例?原创 2022-09-16 20:28:50 · 105 阅读 · 0 评论 -
JVM运行时数据区及线程
当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们的运行时数据区。比如大厨做饭,我们把大厨,比作是运行时数据区。而可以类比于执行引擎,将通过准备的东西制作成精美的菜品。运行时数据区即加载到物理内存的东西。原创 2022-09-16 20:28:09 · 62 阅读 · 0 评论 -
JVM方法区
方法区看作是一块独立于java堆的内存空间。(关系如台湾与中国)方法区与java堆一样,是各个线程共享的内存区域。方法去在JVM启动时被创建,并且和java堆一样在物理地址是可以不连续的。关闭时JVM释放这块区域内存。方法区的大小和堆一样,可以选择固定或者可扩展。方法区的大小决定了可以保存多少个类,如果系统定义过多类,会导致方法区移除。jdk7及以前把方法区称为永久代,jdk8及以后使用元空间取代永久代。元空间与永久代的区别:元空间使用本地主机内存。原创 2022-09-16 20:26:26 · 170 阅读 · 0 评论 -
JVM本地方法栈
本地方法是java语言调用非java语言的接口,方法体的具体实现是由非java语言实现编写(Native method)本地方法,(例如Object 中的 getClass())。使用native修饰java的方法称为本地方法。作用:与java外面的环境交互(C、C++、操作系统),提高部分程序效率。java虚拟机栈用于管理java方法的调用,本地方法栈用于管理本地方法的调用。本地方栈也是线程私有,栈大小允许固定长度或动态扩展。原创 2022-09-16 20:25:48 · 684 阅读 · 0 评论 -
JVM堆
堆,年轻代,老年代,1、new的对象先放进Eden区。2、当Eden(伊甸园)区填满时,JVM垃圾回收器才会对Eden进行垃圾回收(Minor GC == Y GC),将不再被其他对象所引用的对象进行销毁(图中为红色),又会有新创建的对象进来。3、然后将Eden中的剩余对象移动至幸存者区,“age” 加 1。4、幸存者区中分 from 和 to它们是随机变化的,to 代表空,from中含有对象。这里就是经过垃圾回收Eden剩余的对象移动至 s1区(to区,空),s0区幸存的对象也移动至 s1,age增长。原创 2022-09-16 20:23:20 · 372 阅读 · 0 评论 -
JVM虚拟机栈
虚拟机栈,栈的储存单位栈帧(局部变量表,操作数栈,动态连接,方法返回地址,附加信息),栈的相关面试题。原创 2022-09-16 20:20:52 · 1059 阅读 · 0 评论 -
JVM程序计数器
PC寄存器用来存储指向下一条指令的地址,即将要执行的指令代码。由执行引擎读取下一条指令。在JVM规范中,每个线程都有自己的程序计数寄存器(很小的内存空间,运行速度快),是线程私有的,生命周期与线程的生命周期保持一致。原创 2022-09-16 20:10:24 · 175 阅读 · 0 评论 -
JVM概述及类加载子系统
JVM虚拟机特点、类加载子系统、双亲委派机制、JVM生命周期原创 2022-09-16 20:07:06 · 272 阅读 · 0 评论