
JVM
文章平均质量分 84
philpy_used
这个作者很懒,什么都没留下…
展开
-
JVM虚拟机 字节码指令表
字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x08iconst_5将int型5推送...原创 2022-01-25 17:44:35 · 690 阅读 · 0 评论 -
JVM初探
一个Java文件的执行流程粗略地讲就是这样:1、javac编译器2、类装载子系统原创 2021-09-16 16:53:55 · 380 阅读 · 0 评论 -
JVM初探之 字节码执行引擎
字节码执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。在不同的虚拟机实现中,执行引擎在执行字节码的时候,通常会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备,还可能会有同时包含几个原创 2021-09-16 11:52:27 · 608 阅读 · 0 评论 -
JVM初探之 堆和垃圾回收
对于Java应用程序来说,Java堆(Java Heap)是虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,Java世界里“几乎”所有的对象实例都在这里分配内存(The heap is the runtime data area from which memory for all class instances and arrays is allocated)。Java堆既可以被实现成固定大小的,也可以是可扩展的,不过原创 2021-09-15 17:41:28 · 1113 阅读 · 0 评论 -
JVM初探之 方法区
方法区是一个规范,永久代、元空间是它的具体实现jdk1.8以前,方法区的实现叫永久代,是存储在堆上的。字符串常量池、静态变量、类型信息等是存储在永久代的jdk1.8及以后,方法区的实现叫元空间,是存储在本地内存上的。jdk1.7时,常量池、静态变量被移动到了堆内存,到了jdk1.8,永久代彻底不存在了,变成了元空间...原创 2021-09-14 17:58:23 · 409 阅读 · 0 评论 -
JVM初探之 Java虚拟机栈
Java虚拟机栈也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出OutOfMemo原创 2021-09-14 10:43:23 · 378 阅读 · 0 评论