![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
北海道恋人
某不知名大学在校学生
展开
-
JVM-垃圾收集器与内存分配策略(垃圾回收算法、垃圾回收器、内存分配与回收)
JVM垃圾收集器与内存分配策略 文章目录JVM垃圾收集器与内存分配策略一、哪些内存需要回收1、引用计数法2、根搜索算法3、什么是引用4、对象的标记5、回收方法区二、垃圾回收算法1、标记清除算法2、复制算法3、标记整理算法4、分代收集算法三、垃圾收集器1、Serial收集器2、ParNew收集器3、Parallel Scavenge收集器4、Serial Old收集器5、Parallel Old收集器6、CMS收集器7、G1收集器四、内存分配和回收策略1、对象优先在Eden分配2、大对象直接进入老年代3、长期原创 2020-08-11 17:14:41 · 188 阅读 · 2 评论 -
Java并发线程安全与锁优化(不可变 绝对线程安全 相对线程安全 线程兼容 线程对立 互斥同步 非阻塞同步 自旋锁 自适应锁 锁消除 锁粗化 轻量级锁 偏向锁 CAS synchronized)
线程安全与锁优化 文章目录线程安全与锁优化一、线程安全概念不可变绝对线程安全相对线程安全线程兼容线程对立二、线程安全的实现方法互斥同步最基本互斥手段就是synchronized另一种手段JUC下的ReentrantLock阻塞同步的问题:非阻塞同步实现方式CAS操作:无同步方案三、锁优化自旋锁与自适应锁锁消除锁粗化轻量级锁偏向锁 一、线程安全概念 为了更好的理解线程安全,我们不把线程安全看做是一个二元对立的选项来看,而是按照线程安全的”安全程度“由强至弱来排序。 Java线程各种操作共享的数据分为五类:原创 2020-05-31 18:28:33 · 1194 阅读 · 0 评论 -
Java虚拟机类加载机制(类加载过程、类加载器、双亲委派机制)
虚拟机类加载机制 在我们写好的代码编译生成xxx.class文件之后,是如何被JVM加载执行的呢?这就是虚拟机类加载机制要解决的问题了。 一、概述 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,就是虚拟机的类加载机制 Java支持动态扩展,与在编译时需要进行连接的语言不同,Java语言可以在运行时进行类的加载 二、类加载的时机 当一个类被加载到虚拟机内存中到卸载出内存为止,它的生命周期包括了七个阶段:加载、验证、准备、解析、初原创 2020-06-05 16:11:34 · 170 阅读 · 0 评论 -
JAVA虚拟机JVM字节码执行引擎(栈帧内部结构、分派概念、基于栈的指令集)
虚拟机字节码执行引擎 运行时栈帧结构 概述 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,位于虚拟机栈中。 栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的附加信息。 局部变量表 局部变量表是一组变量的存储空间,用于存放方法参数和方法内部的局部变量,在程序被编译为Class文件时就被方法的Code属性中的max_locals数据项确定(详情不了解参看之前博客Class类文件结构) 变量槽 局部变量表的容量以变量槽(Slot)为最小单位分配。虚拟机规范并未明确指明Slot大原创 2020-06-05 16:42:17 · 187 阅读 · 0 评论 -
Java虚拟机JVM的编译期优化(早期、晚期)和几种语法糖
编译期(早期)优化和几种语法糖 文章目录编译期(早期)优化和几种语法糖一、编译期概述二、前端编译期步骤过程解析与填充符号表词法与语法分析填充符号表注解处理器语义分析与字节码生成三、语法糖泛型与类型擦除自动装箱、拆箱与遍历循环编译期(晚期)优化解释器与编译器HotSpot虚拟机内置即时编译器编译优化技术 一、编译期概述 Java语言的“编译期”并不特指将xxx.java编译为xxx.class。Java有三个编译器 JIT编译器:将字节码编译为机器码(将热点代码进行编译,提高效率) AOT编译器:将xxx.原创 2020-06-08 09:51:23 · 375 阅读 · 0 评论 -
JAVA你真的了解String类型吗(String类型经典内存位置问题深入解读)
你真的了解String类型吗(String类型经典内存位置问题深入解读) 本文讲解一下String的基本情况,对于对应API方法不做涉及,本文所指JAVA环境为JAVA8 主要讲解内容: public class StringTest { public static void main(String[] args) { String hello = "Hello"; String world = "World"; String hello_world1原创 2020-05-31 18:39:16 · 204 阅读 · 0 评论 -
Java之Class类文件结构(学了这么久Java,你了解Class字节码文件吗?)
Class类文件结构 由于本部分内容过于繁琐与细节,所以本文内容较多,且有些细节仍未照顾到,所以最后以一个反编译文件为例进行类文件结构分析。如果大家有问题可以评论,一起学习一起进步。 文章目录Class类文件结构一、Class文件结构魔数与Class文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合 一、Class文件结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔符。如果有效文件不是8字节原创 2020-06-04 09:23:19 · 341 阅读 · 0 评论