jvm
summer11011
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记 -- 运行时数据区域
程序计数器程序计数器是 一块较小的内存空间,他可以看作是当前线程所执行的字节码的型号指示器。字节码解释器工作时就是通过这个计数器的值来选取吓一跳需要执行的字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。我们知道Java虚拟机额 多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的。所以一个处理器(一个内核)在一个确定的事件只能执行一条指令。为了线程切换后哼哼回复正确的执行位置,每条线程都需要有一个独立的程序计数器,我们称这类内存区域为“线程私有”的内存。ja原创 2020-08-31 20:03:42 · 160 阅读 · 0 评论 -
JVM学习笔记之 -- Class文件结构(2)
前言上篇我们说到,Class文件中最开始的4个字节为魔数(用来盘对是否是一个虚拟机可以接受的Class文件),紧接着的四位为主版本号和次版本号(各两位),之后为常量池部分(在常量池入口,及第9位和第10位代表常量池容量计数值)。之后的文件部分我们将在本文中提及。访问标志在常量池结束之后,紧接着两个字节表示访问标志(access_flags),此标志用于试别类或者接口层次的访问信息,具体内容包括(如下表所示):注意上图中的8个标志会对应1个或多个为真,所以access_flag值为所有为真的标志的原创 2020-08-28 11:32:58 · 145 阅读 · 0 评论 -
JVM学习笔记之 -- Class文件结构(1)
对于初学者来说,大部分人都还认为Java虚拟机执行Java程序是一件理所当然和天经地义的事情。但其实Java虚拟机不和包括Java在内的任何语言绑定,他只和“Class文件”这种特定的二进制文件格式所关联。使用Java编译器可以把Java代码编译为储存字节码的Class文件,而使用例如JRuby等语言的编译器同样可以把程序代码编译成Class文件,虚拟机并不关心Class的来源是何种语言。那么下面我们就具体来说一下Class文件的内部结构。Class类文件的结构Class文件是一组以8位字节位基础单位的原创 2020-07-14 21:50:57 · 90 阅读 · 0 评论 -
HotSpot虚拟机(1)
HotSpot虚拟机(1)对象的创建对象的创建对于Java中一条new的指令,在虚拟机中需要进行如下几步过程才能完成创建对象:检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号应用代表的类是否已经被加载、解析和初始化,如果没有,那必须先进性相应的类加载过程在类加载检查通过后,接下来虚拟机将为新生对象分配内存(对象所需的内存大小在类加载之后便可确定),而内存的划分分为两种:- Java堆中内存是绝对规整的:所有用过的内存都放在一边,空闲的内存放在另一边,中间放一个指针原创 2020-07-05 22:06:34 · 161 阅读 · 0 评论