S++

千线一眼

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  JVM

Java虚拟机
JVM-类加载(5)
摘要:类加载器 以 jdk8 为例: | 名称 | 加载什么地方的类 | 说明 | | | | | | Bootstrap ClassLoader | JAVA_HOME/jre/lib | 无法直接访问 | | Extension ClassLoader | JAVA_HOME/jre/lib/ext 阅读全文

posted @ 2022-05-26 08:46 S++ 阅读(29) 评论(0) 推荐(0) 编辑

JVM-类加载(4)
摘要:类加载的三个阶段 加载 将类的字节码加载到方法区中,内部采用 C++ 的 instanceKlass 描述java类 其重要的field有: _super 父类 _fields 成员变量 _methods 方法 _constants 常量池 _vtable 虚方法表 _itable 接口方法表 _c 阅读全文

posted @ 2022-05-25 20:11 S++ 阅读(35) 评论(0) 推荐(0) 编辑

JVM-类加载(3)
摘要:什么是语法糖 所谓的语法糖,其实就是指java编译器把*.java 源码编译为*.class 字节码的过程中, 自动生成和转换的一些代码,主要是为了减轻程序员的负担。 (给糖吃不捣蛋) 语法糖1 - 默认构造器 当我们编写一个没有构造方法的类,在编译为class后的代码是有无参构造的。 这个无参构造 阅读全文

posted @ 2022-05-23 17:09 S++ 阅读(24) 评论(0) 推荐(0) 编辑

JVM-类加载(2)
摘要:多态原理 当执行 invokevirtual 指令时: 先通过栈帧中的对象引用找到对象 分析对象头,找到对象的实际 Class Class 结构中有 vtable,它在类加载的链接阶段就已经根据方法的重写规则生成好了 查表得到方法的具体地址工 执行方法的字节码 异常处理 面试题-1 public i 阅读全文

posted @ 2022-05-23 14:50 S++ 阅读(20) 评论(0) 推荐(0) 编辑

JVM-类加载(1)
摘要:类文件结构 根据JVM的规范,类文件的结构如下: | 类型 | 名称 | 解释 | | | | | | u4 | magic | 魔数 | | u2 | minor_version | 小版本号 | | u2 | major_version | 主版本号 | | u2 | constant_pool 阅读全文

posted @ 2022-05-10 21:50 S++ 阅读(21) 评论(0) 推荐(0) 编辑

JVM-垃圾回收(4)
摘要:GC调优 确定目标 首先要确定项目的目的在于【低延迟】还是【高吞吐量】 比如互联网项目要求的是低延迟高响应,而科学计算之类的项目则要求高吞吐量。 CMS、G1、ZGC(低延迟可选) ParallelGC(高吞吐可选) 最快的GC是不发生GC 如果一个程序发生过于频繁的GC,那么就应该考虑以下几点: 阅读全文

posted @ 2022-05-09 21:02 S++ 阅读(19) 评论(0) 推荐(0) 编辑

JVM-垃圾回收(3)
摘要:垃圾回收器补充——G1(Garbage First) G1垃圾回收器在2012年JDK 7u4中得到官方支持 而在2017年的JDK9更是将其设定为默认的垃圾回收器 G1的特点很多: 同时注重吞吐量(Throughput)和低延迟(Low Latency),默认的暂停目标是200ms 适用超大的堆内 阅读全文

posted @ 2022-05-06 21:45 S++ 阅读(41) 评论(0) 推荐(0) 编辑

JVM-垃圾回收(2)
摘要:回收算法补充——分代回收 实际的JVM并不会单独的使用一种算法,分代回收的垃圾回收机制就体现了这一点。 JVM将堆内存划分为两个区域——新生代 和 老年代 新生代使用复制算法 老年代使用标记 - 清除 或者 标记 - 整理 算法 而新生代又细分为 伊甸园、幸存区From、幸存区To 新创建的对象放在 阅读全文

posted @ 2022-05-06 16:23 S++ 阅读(22) 评论(0) 推荐(0) 编辑

JVM-垃圾回收(1)
摘要:如何判断对象是否可以回收 引用计数法 只要这个对象被引用则让其计数+1,当没有引用该对象时,即计数为0的时候,该对象就会作为垃圾被回收。 弊端:循环引用 当两个以上的对象相互引用,形成闭环的时候,导致它们的计数无法归零无法被垃圾回收! 可达性分析算法 在垃圾回收之前,对堆内存中的所有对象进行一遍扫描 阅读全文

posted @ 2022-05-05 10:10 S++ 阅读(28) 评论(0) 推荐(0) 编辑

JVM-直接内存
摘要:定义 是属于操作系统的内存 常用于NIO操作,用于数据缓冲区 分配回收成本高,但读写性能高 不受JVM内存回收管理 文件读写过程 Java本身并不具有磁盘读写的能力,磁盘读写必须调用操作系统提供的方法。 当切换到内核态(System)时,开始调用操作系统方法读取磁盘文件 首先读取到系统内存,会在系统 阅读全文

posted @ 2022-05-02 09:47 S++ 阅读(229) 评论(0) 推荐(0) 编辑

JVM-StringTable
摘要:StringTable的位置 面试题 有这样一个面试题 public class Main{ public static void main(String[] args) { String s1 = "a"; String s2 = "b"; String s3 = "a" + "b"; Strin 阅读全文

posted @ 2022-04-28 09:31 S++ 阅读(15) 评论(0) 推荐(0) 编辑

JVM-内存结构
摘要:1. 程序计数器(PC Counter Register) 定义 一般是机器的寄存器 作用 记录下一条JVM指令指定的地址 特点 线程私有 不会存在内存溢出 2. 虚拟机栈(JVM Stacks) 定义 栈:先进后出的存储结构 每个线程运行时所需要的内存空间,成为虚拟机栈 栈帧 每个栈由多个栈帧(F 阅读全文

posted @ 2022-04-25 14:00 S++ 阅读(34) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示