随笔分类 -  JVM

Java虚拟机
摘要:原文:How G1 Garbage Collector work in Java 作者:Perspective Mentor G1垃圾收集器采用了一个全新的垃圾收集方式,这让它在Java中的其它GC算法中鹤立鸡群。 介绍 G1(Garbage-First)是作为Parallel和CMS的替代者被引入 阅读全文
posted @ 2024-05-29 11:13 yudoge 阅读(94) 评论(0) 推荐(0) 编辑
摘要:类文件内容 魔数 主次版本号 常量池 访问标志 类索引、父类索引与接口索引集合 字段表集合 方法表集合 属性表集合 什么是属性表集合 字段表和方法表分别用于描述一个字段和一个方法,而它们当中都有一个属性表,属性表用于描述一些额外信息,比如对于常量字段来说,它可能包含一个指向常量池中的常量的引用,对于 阅读全文
posted @ 2022-08-14 10:24 yudoge 阅读(47) 评论(0) 推荐(0) 编辑
摘要:内存布局 JVM运行时数据区(内存布局) JVM,VM代表它是个虚拟机,也就是说它其实是对操作系统一些功能的一个模拟,它有自己模拟的堆、栈、字节码执行等功能。 栈:支撑Java的过程调用的数据结构,每一个线程都有独立的过程调用分支,所以栈线程独立 本地方法栈:调用native方法时用的栈结构 堆:面 阅读全文
posted @ 2022-08-12 10:31 yudoge 阅读(35) 评论(0) 推荐(0) 编辑
摘要:一道面试题,单拿出来放一篇文章中方便找 203. 说一下 jvm 有哪些垃圾回收器? Serial系列 Serial和SerialOld分别是这个系列面向新生代和老年代的垃圾收集器,它们的特点就是单线程,而且,一旦开始工作,整个工作过程必须中断用户线程的执行以保证垃圾回收的正确性。 听起来很无法接受 阅读全文
posted @ 2022-07-05 10:37 yudoge 阅读(81) 评论(0) 推荐(0) 编辑
摘要:前言 在文章中,经常能看到说着说着中文突然出来一段英文,这可能是因为这段的原理译者也不太了解,所以不敢乱加翻译,或者是这一段根本没必要翻译。 如果遇到这种格式的: 长段的英文句子 这应该是上面的一句话翻译了,但是又怕和原文差之千里,所以贴上原文。 下面开始是原文了 原文:Chapter 2. The 阅读全文
posted @ 2022-04-19 15:59 yudoge 阅读(115) 评论(0) 推荐(0) 编辑
摘要:原文Behind the scenes: How do lambda expressions really work in Java? 作者:Ben Evans 通过字节码查看Java如何处理lambda lambda在Java代码中和JVM中式什么样的?显然,它是某种类型的值,Java允许两种类型 阅读全文
posted @ 2022-03-21 21:12 yudoge 阅读(262) 评论(0) 推荐(0) 编辑
摘要:前置 不要把垃圾收集器的功能看的太单一,除了回收垃圾之外,内存的组织、分配、管理等操作也是垃圾收集器的工作。有的垃圾收集器选择分代设计,有的选择不分代。 垃圾收集器的性能主要从三方面考虑:停顿时间、吞吐量和内存占用 对于第二点,这三种目标无法同时满足,一个垃圾回收器基本只能满足其中的一到两点。比如这 阅读全文
posted @ 2022-03-14 12:05 yudoge 阅读(793) 评论(0) 推荐(0) 编辑
摘要:类加载时机 类加载分为:加载、验证、准备、解析、初始化、使用和卸载阶段。验证、准备、解析阶段统称为连接阶段。解析阶段有时可能在初始化阶段后开始。 Java虚拟机规范没有定义类何时被加载、验证、准备,但是定义了六种情况Java虚拟机必须立即将类进行初始化,并且有且只有这6种情况会触发初始化。所以在这6 阅读全文
posted @ 2021-09-19 20:41 yudoge 阅读(40) 评论(0) 推荐(0) 编辑
摘要:字节码指令概述 在上一篇笔记的Code属性表中有一个区域是存储字节码指令的。 Java方法中的代码会被编译成一些字节码指令存储到Code属性表中。一条Java代码可能由多个字节码指令组合而成。 Java的字节码指令由两部分组成,分别是长度为一个字节的操作码,和零个或多个该操作码可需要的参数。 操作码 阅读全文
posted @ 2021-09-08 18:06 yudoge 阅读(64) 评论(0) 推荐(0) 编辑
摘要:概述 现代编程语言大多数都不再是直接编译成本地机器码了,因为都要跨平台了。具体的实现方法大概就是提供一个中间格式的平台无关的(甚至语言无关)字节码文件,然后语言开发商再去针对不同平台编写不同的运行系统去解释运行(不完全是解释运行)这些字节码文件。 Java的字节码文件就是.class文件,Java的 阅读全文
posted @ 2021-09-07 18:05 yudoge 阅读(46) 评论(0) 推荐(0) 编辑
摘要:概述 对于栈,它其中的变量都是跟随方法结束就被销毁的,而且它们所需要的大小在运行期就能确定,所以垃圾清理不会考虑这其中的内容。 垃圾清理主要考虑堆中的内容,因为这里面的内容更加多变,其中的对象大小,对象有多少,它们之间的依赖关系都是需要运行时才能确定,所以这部分需要垃圾回收机制进行动态管理。 引用计 阅读全文
posted @ 2021-09-02 18:57 yudoge 阅读(174) 评论(0) 推荐(0) 编辑
摘要:分区 Java内存区域分为五个块 深色的部分被所有线程共享,浅色的部分线程私有。 程序计数器 用来记录当前线程正在运行的字节码的行号,就是用来找运行到哪里了的一个记录指针。它很小。 如果程序都是简单的顺序执行,可能也就不需要程序计数器了,但是程序中有各种选择、分支、异常处理等结构,必须有一个指针来选 阅读全文
posted @ 2021-08-31 13:04 yudoge 阅读(45) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩