JVM
NoloseWind
From zero to hero.
展开
-
JVM底层原理篇六:GC底层算法 十大垃圾回收器 G1 CMS 三色标记 对象分配
基础概念- 没有引用指向的对象,就是垃圾- C/C++中,是自行回收垃圾,所以效率很高,但是开发很麻烦- Java是由GC来帮我们回收垃圾,可以很大的提高开发效率- GC调优就是让回收垃圾的效率变高,减少FGC的触发,尽量让YGC去解决问题GC定位垃圾的算法- reference count:引用计数○ 有几个引用指向对象,就在对象上标记对应的数字 ,当标记为0时,就代表这个对象是一个垃圾○ 会产生循环引用的问题,A引用B,B引用C,C引用A,这时,ABC的标记都是1,就会形成一团垃圾,无法原创 2022-03-14 23:18:03 · 648 阅读 · 0 评论 -
JVM底层原理篇五:JVM五大内存模型 Runtime Data Area
Runtime Data AreaRuntime Data Area指的是Java在运行时的数据区,也就是JVM的内存模型1.Program Counter- 简称PC,程序计数器,用于存放指令的位置- 取PC中的位置,找到对应的指令,执行指令,最后PC++,只要还有指令,就会一直循环这个操作2.JVM Method Stacks- JVM的栈,线程独有的,栈里面是一堆栈帧(frame)- 每个线程对应一个栈,每个方法对应一个栈帧3.Native Method Stacks- 本地方法原创 2022-03-14 22:51:47 · 596 阅读 · 0 评论 -
JVM底层原理篇四:硬件知识 MarkWord 对象在JVM中的定位 创建和内存分布
硬件知识:存储器的层次结构: ○ L0:寄存器,速度为1个cpu时间单位,大概是十亿分之一秒 ○ L1:高速缓存,位于CPU核的内部,速度为3-4个cpu时间单位 ○ L2:高速缓存,位于CPU核的内部,速度为10个左右的cpu时间单位 ○ L3:高速缓存,位于CPU的内部,不在核的内部,CPU直接共享的缓存,速度为40-45个cpu时间单位 ○ L4:主存,CPU共享,速度大概是60-80纳秒 ○ L5:磁盘,CPU共享 ○ L6:远程文件存储 ○ 当CPU需要使用一个数据时,会从L1开原创 2022-03-14 22:44:16 · 944 阅读 · 0 评论 -
JVM底层原理篇三:类加载过程 双亲委派机制
类加载loading(装载)a. 类加载器概念: ○ 类加载器就是ClassLoader,一个普通的Class ○ 在JVM中,所有的class都是被ClassLoader从虚拟机加载到内存的 ○ 类加载器总共分为四层,不同的加载器会加载不同的class Bootstrap Class Loader:最顶层,也就是最开始的类加载器,负责加载JDK中最核心的类 Extension Class Loader:加载扩展包中的类文件,比如:jre/lib/ext/*.jar Applicati原创 2022-03-14 22:29:02 · 328 阅读 · 0 评论 -
JVM底层原理篇二:Class文件结构
概念对于进制类的字节码文件,计算机比人类更容易理解,而我们需要的就是制定文件的规则Class File Format,就是Class文件制定给JVM的规则idea字节码查看工具:sublime基本核心参数说明:Magic Number○ 魔术编号,用来标识这个是一个什么样的文件,比如Java的文件开头就是 cafe babeMinor Version○ 版本小号Major Version○ 版本主号constant_pool_count○ 表示的是常量池里面有多少内容cons原创 2022-03-14 22:16:23 · 241 阅读 · 0 评论 -
JVM底层原理篇一:基础概念
什么是JVM?JVM是一个虚构出来的计算机,本身也是一种规范,有着自己的指令集和内存管理和Class文件有关系,并非绑定Java,任何语言只要可以编译成Class文件都可以在JVM中运行也就是说,从装载类库到解释器或者编译器执行,这块内容都属于JVMJVM是解释执行还是编译执行?混合执行,即是有编译也有解释mixed mode表示解释执行和编译执行混合解释器:Bytecode intepreter编译器:JIT, Just In-Time compilerJVM会自动监测热点代码,把原创 2022-03-14 22:06:34 · 1283 阅读 · 0 评论