深入理解Java虚拟机
Jacob.Zh
。
展开
-
Java虚拟机之运行时数据区域
Java运行时数据区域Java虚拟机在执行Java程序时会将它管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。《Java虚拟机规范》规定,Java虚拟机所管理的内存将会包含以下几个运行时数据区域:1、程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程的所执行的字节码的行号指示器。由于Java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,在任何一原创 2020-12-05 23:13:03 · 157 阅读 · 0 评论 -
HotSpot虚拟机中的Java对象
一、对象的创建过程1、类加载检查当Java虚拟机遇到一条字节码new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有,则必须先执行相应的类加载过程。2、内存分配类加载检查通过后,虚拟机为新生对象分配内存,对象所需的内存大小在类加载完成后便可以完全确定,为新生对象分配内存的过程等同于从Java堆中划分出一块确定大小的内存块。(1)、内存分配方式指针碰撞:若Java堆中的内存是绝对规整的,所有被使用过的内存被原创 2020-12-05 23:08:09 · 156 阅读 · 0 评论