- 博客(9)
- 收藏
- 关注
原创 JVM入门--10 操作数栈
操作数栈也是一个先进后出的数据结构,只支持入栈和出栈两种操作。许多Java字节码指令都需要通过操作数栈进行参数传递。比如 iadd指令,它就会在操作数栈中弹出两个整数并进行加法计算,计算结果会被入栈。操作数栈是栈帧中重要的内容之一,它主要用于保存计算过程的中间结果,同时作为计算过程中变量临时的存储空间。
2024-04-09 17:06:11 201 1
原创 JVM入门--09 局部变量表
局部变量表是栈帧的重要组成部分之一。它用于保存函数的参数以及局部变量。局部变量表中的变量只在当前函数调用中有效,当函数调用结束后,随着函数栈帧的销毁,局部变量表也会随之销毁。由于局部变量表在栈帧之中,因此,如果函数的参数和局部变量较多,会使得局部变量表膨胀,从而每一次函数调用就会占用更多的栈空间,最终导致函数的嵌套调用次数减少。
2024-03-27 17:21:50 676
原创 JVM入门--08 Idea安装 jclasslib 插件
jclasslib是一个用于查看和编辑Java类文件的工具。它提供了一个图形界面,可以显示类文件的结构、常量池、字段、方法等信息,并且可以对这些信息进行修改。打开Idea,依次选择File->settings...-Plugins,在右侧的Marketplace搜索jclasslib。打开某个class类,选择View->Show Bytecode With Jclasslib。点击Install按钮,安装完毕后,重启Idea就可以用了。
2024-03-25 16:05:27 444
原创 JVM入门--07 Java栈
Java栈是一块线程私有的内存空间。如果说,Java 堆和程序数据密切相关,那么 Java 栈就是和线程执行密切相关的。线程执行的基本行为是函数调用, 每次函数调用的数据都是通过 Java栈传递的。
2024-01-21 11:07:16 332
原创 JVM入门--06 Java堆
TestHeap 实例本身分配在堆中, 描述 TestHeap 类的信息存放在方法区,main()函数中 t1 和 t2 局部变量存放在 Java 栈中,并指向堆中的两个实例。在绝大多数情况下,对象首先分配在 eden 区,在一次新生代回收后,如果对象还存活,则会进入 s0 或者 s1,之后,每经过一次新生代回收,对象如果存活,它的年龄就会加 1。其中,新生代存放新生对象或者年龄不大的对象,老年代则存放老年对象。Java 堆是和 Java 应用程序关系最为密切的内存空间,几乎所有的对象都存放在堆中。
2024-01-21 11:07:07 346
原创 JVM入门--01~02 整数在 Java 虚拟机中是怎么表示的
在 Java 虚拟机中,整数有 byte、short、int、long 四种,分别表示 8 位、16 位、32 位、64位有符号整数。整数在计算机中使用补码表示,在 Java 虚拟机中也不例外。
2024-01-21 11:05:48 342
原创 JVM入门--04 Java虚拟机的架构
类加载子系统、Java堆、方法区、直接内存、垃圾回收系统、Java栈、本地方法栈、PC寄存器、执行引擎。
2024-01-21 11:05:33 413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人