
JVM
文章平均质量分 89
Java虚拟机
黄名富
他很懒,还没有添加介绍
展开
-
Java 方法执行原理底层解析
java 文件经过javac编译后,变成了存储了一系列指令的.class文件。本文从指令层面分析Java 方法从解析、调用到执行的过程。原创 2025-03-22 20:37:45 · 954 阅读 · 0 评论 -
深入探究 JVM 堆的垃圾回收机制(二)— 回收
GC Roots 枚举需要遍历整个应用程序的上下文,而在进行可达性分析或者垃圾回收时,如果我们还是进行全堆扫描及收集,那么会非常耗时。JVM 将堆分为新生代及老生代,它们的回收频率及算法不一样。原创 2025-03-21 19:48:12 · 808 阅读 · 0 评论 -
深入探究 JVM 堆的垃圾回收机制(一)— 判活
垃圾回收分为两步:1)判定对象是否存活。2)将“消亡”的对象进行内存回收。原创 2025-03-20 22:31:11 · 733 阅读 · 0 评论 -
Java后端编译与优化
如果我们将字节码看作是程序语言的一种中间表示形式,那编译器无论在何时、在何种状态下把Class文件转换成与本地基础设施相关的二进制机器码,它都可以视为整个编译过程的后端。原创 2023-07-09 14:43:20 · 730 阅读 · 0 评论 -
Java前端编译与优化
一个编译器的前端把*.java文件转变成*.class文件的过程称为Java前端编译。像Javac这类前端编译器对代码的运行效率几乎没任何优化措施,但是其做了许多针对Java语言编码过程的优化措施来降低程序员的编码复杂度、提供编码效率。原创 2023-07-02 18:00:38 · 314 阅读 · 0 评论 -
Java动态类型语言支持
JDK7发布字节码首位新成员——invokedynamic指令。以实现动态类型语言支持。也是为JDK8里可以顺利实现Lambda表达式而做的技术储备。我们将在本文详细了解动态语言支持这项特性出现的背景和它的意义与价值。原创 2023-05-21 04:28:39 · 1021 阅读 · 2 评论 -
运行时栈帧结构与方法调用
Java虚拟机以方法作为最基本执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。原创 2023-05-18 12:20:44 · 563 阅读 · 0 评论 -
类加载器与模块化系统
类加载器”是实现应用程序自己决定如何去获取所需的类这个动作的代码。原创 2023-05-17 15:04:40 · 394 阅读 · 0 评论 -
类加载过程
Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。原创 2023-05-17 00:02:07 · 1254 阅读 · 0 评论 -
Class类文件的结构
Class文件是一组以8个字节为基础单位的二进制流;各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符;采用一种类似C语言结构体的伪结构来存储数据,只要两种数据类型:“无符号数”和“表”。无符号数属于基本的数据类型,可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。原创 2023-05-13 07:53:36 · 401 阅读 · 0 评论 -
Java字节码指令
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的0至多个代表此操作所需的参数(称为操作数,Operand)构成。原创 2023-04-26 23:40:33 · 1252 阅读 · 0 评论 -
实战:内存分配与回收策略
java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存。原创 2023-04-16 13:10:42 · 523 阅读 · 0 评论 -
Java低延迟垃圾收集器
衡量垃圾收集器的三项最重要的指标是:内存占用、吞吐量和延迟。要在这三个方面同时具有卓越表现的“完美”收集器是极其困难甚至是不可能的,一款优秀的收集器通常最大可同时达成其中两项。“延迟”的重要性日益凸显,越来越能容忍收集器多占用一点点内存。原创 2023-04-10 22:54:46 · 424 阅读 · 0 评论 -
HotSpot经典垃圾收集器
虽然垃圾收集器的技术在不断进步,但直到现在还没最好的收集器出现,更加不存在“万能”的收集器,所以我们选择的只是对具体应用最合适的收集器。原创 2023-04-09 18:16:28 · 515 阅读 · 0 评论 -
HotSpot垃圾回收算法
GC ROOT的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中。尽管目标明确,但查找过程需要消耗不少时间。根节点枚举始终必须在一个能保障一致性的快照中才得以进行。这是导致垃圾收集过程必须停顿所有用户线程的其中一个重要原因。原创 2023-04-05 16:22:30 · 561 阅读 · 0 评论 -
垃圾收集算法
当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,它建立在两个分代假说之上:1)弱分代假说:绝大多数对象都是朝生夕灭。2)强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡。原创 2023-04-04 01:25:37 · 249 阅读 · 0 评论 -
Java对象回收
垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象之中哪些还“存活”,哪些已经“死去”。原创 2023-04-03 20:32:20 · 1316 阅读 · 0 评论 -
Java内存区
每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每个方法被调用至执行完毕的过程,就对于者一个栈帧在虚拟机栈中从入栈到出栈到过程。原创 2023-03-30 01:31:05 · 246 阅读 · 0 评论