随笔分类 - JVM
摘要:1、栈帧的结构 Java虚拟机以方法作为最基本的执行单元,“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址
阅读全文
摘要:1、判断对象是否存活 1.1 引用计数算法(虚拟机中基本不用) 很多教科书判断对象是否存活的算法是这样的:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 客观地说,引用计数算法(Reference Co
阅读全文
摘要:1、运行时数据区概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内
阅读全文
摘要:1、类加载概述 1.1 概述 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 与那些在编译时需要进行连接的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运
阅读全文
摘要:一、从class文件开始 Java程序的运行包括两个重要的阶段 编译阶段:检查源代码是否符合 Java 语法,符合则生成正常的 .class 文件 源代码.java文件 ——》字节码.class文件 字节码不是存粹的二进制,无法在操作系统中直接执行,在JVM中执行 运行阶段:可以在其他操作系统中跨平
阅读全文