12 2023 档案
发表于 2023-12-26 16:51阅读:135评论:0推荐:0
摘要:Java 内存模型 Java 内存模型(Java Memory Model)的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节 1. 主内存与工作内存 Java 内存模型规定了 所有的变量都存储在主内存(Main Memory)中(虚拟机内
阅读全文 »
发表于 2023-12-22 17:19阅读:94评论:0推荐:0
摘要:垃圾回收 垃圾回收需要完成的三件事情 哪些内存需要回收? 什么时候回收? 如何回收? 1. 如何判断对象是否存活 在堆里面存放着 Java 世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,首先就要确定对象的存活状态 1.1 对象存活算法 1.1.1 引用计数算法(Reference Count
阅读全文 »
发表于 2023-12-21 21:10阅读:18评论:0推荐:0
摘要:类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称作虚拟机的类加载机制 与那些在编译时需要进行连接的语言不同,在 Java 语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这
阅读全文 »
发表于 2023-12-21 21:09阅读:17评论:0推荐:0
摘要:Class 类文件的结构 Class 文件是一组以 8 个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在 当遇到需要占用 8 个字节以上空间的数据项时,则会按照高位在前
阅读全文 »
发表于 2023-12-21 21:03阅读:25评论:0推荐:0
摘要:对象 1. 对象的创建 Java 是一门面向对象的编程语言,Java 程序运行过程中无时无刻都有对象被创建出来 1.1 类加载检查 当虚拟机遇到一条字节码 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果
阅读全文 »
发表于 2023-12-21 21:01阅读:68评论:0推荐:0
摘要:运行时数据区域 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域 JDK 1.7 JDK 1.8 1. 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器 字节码解释器工作时就
阅读全文 »
发表于 2023-12-21 20:58阅读:40评论:0推荐:0
摘要:JVM JVM(Java Virtual Machine)是一种能够执行 Java 字节码的虚拟机,是实现 Java 跨平台特性的核心部分,他屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以在多种平台上不加修改地运行 JDK、JRE 与
阅读全文 »