
JVM
文章平均质量分 72
赐他一丈红
天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。 人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。
展开
-
jvm中虚拟机栈的各部分运行情况
目录一、虚拟机栈中的结构二、字节码运行情况三、动态链接 一、虚拟机栈中的结构 在虚拟机栈中的基本单位是栈帧,一个方法对应一个栈帧。一个方法的调用意味着一个栈帧进入栈中,当这个方法遇到return或异常时意味着方法的结束,相应有一个出栈的操作。 每个栈帧中5部分结构:局部变量表、操作数栈、方法返回地址、动态链接、一些附加信息。 二、字节码运行情况 通过一端简单的代码,看看指令情况。 public static void main(String[] args) { int a =15;原创 2021-08-10 20:25:51 · 202 阅读 · 0 评论 -
jvm中的程序计数器的两个常见问题
目录一、简单了解程序计数器二、pc寄存器存储字节码指令的作用?三、pc寄存器为什么被设定为私有的? 一、简单了解程序计数器 在jvm的运行时数据区中,我们知道每个线程都会有一些独立、私有的区域,例如程序计数器。 作用是存储下一次所执行的指令的地址,由执行引擎读取下一条指令。 在jvm中,程序计数器占很小的内存,几乎可以忽略不计,但它是运行速度最快的区域。它是程序跳转的控制器,分支、选择、循环等操作都要靠这个来完成。它是唯一一个在jvm没有outOfMemoryError这个情况的区域。 二、pc寄存器存原创 2021-08-09 22:27:51 · 230 阅读 · 0 评论 -
java类编译、加载、运行的过程
目录Java代码编译过程java代码加载过程java代码的运行过程 Java代码编译过程 在我们编写好的java程序后,有一个java源程序文件是以.java结尾的。我们可以通过jdk携带的javac.exe这个编译器来编译我们的java源程序,直接可以使用javac One.java 这个命令来完成编译。 编译完成后,会生成一个.class结尾的文件,也是因为有了这个文件,使得我们的字节码文件能够在不同的操作系统上去运行,从而实现跨平台执行。 java代码加载过程 在java中,负责把class文件加原创 2021-08-01 15:08:24 · 1149 阅读 · 0 评论 -
jvm内存自动管理之垃圾收集器(一)
在java程序中,没有了像其他类型编程语言那样的由程序创建者所自行管理内存的方法。转而把内存管理交给了jvm自动进行管理,包含了创建到销毁的全过程。其中销毁的过程由一个原创 2021-08-05 10:25:53 · 176 阅读 · 0 评论 -
jvm的自动内存管理机制之数据区域简介
目录一、运行时的数据区域二、程序计数器三、虚拟机栈 一、运行时的数据区域 java虚拟机在执行java程序的时候会把管理的内存划分为多个区域进行数据管理,不同的区域的创建和销毁时间可能不同。java虚拟机会创建如下区域: 二、程序计数器 程序计数器是内存较小的一块区域,用来记录当前线程所执行到的代码行号,jvm中的解释器的作用就是通过改变计数器的值读取相应的指令。 在多线程的程序中,每个程序需要记录的执行位置不尽相同,所以就需要为每个线程分配一个计数器。因此,计数器就不能由所有程序共享。 三、虚拟机栈 虚原创 2021-08-04 09:50:24 · 144 阅读 · 0 评论