JVM
JVM的知识
爱敲代码的小黄
我是爱敲代码的小黄,阿里淘宝集团的Java开发工程师,CSDN博客专家,阿里云专家博主。写过的专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列,期待和大家一起学习,一起进步,一起对抗互联网寒冬
展开
-
JVM(四):对象的内存布局
文章目录对象的内存布局请解释一下对象的创建过程对象在内存中的存储布局一个对象多少字节【16个字节】对象头具体包括什么markword 64 位IdentityHashCode对象定位对象的内存布局请解释一下对象的创建过程类加载机制加载验证准备解析初始化申请对象内存成员变量赋予默认值调用构造方法成员变量顺序赋予初始值执行构造方法语句对象在内存中的存储布局观察虚拟机的配置java -XX:PrintCommandLineFlags -version普通对象对象头原创 2020-11-28 23:13:55 · 263 阅读 · 0 评论 -
JVM(三): JMM
JMM硬件层数据一致CPU 怎么保持可见呢?最原始的 CPU 直接上总线锁新版 CPU 采取 MESI Cache 一致性协议因特尔:MESI 协议Modified : 数据被修改Exclusive : 独享的一个Shared : 我读的时候,别人也在读Invalid : 被别的 CPU 更改过,无效这也是缓存锁的实现之一,有些无法被缓存的数据 或者 跨越多个缓存行的数据 依然必须要使用总线锁现代 CPU 的数据一致性实现 = 缓存锁 + 总线锁CPU的乱序执行CP原创 2020-11-28 22:49:35 · 267 阅读 · 0 评论 -
JVM(一):Class文件格式
目录Class类文件结构无符号数表魔数Class文件的版本号常量池访问标志类索引、父类索引、接口索引集合字段表集合方法表集合属性表集合Class类文件结构Class 文件是一组以 8 字节为基础单位的二进制流各个数据项目严格按照顺序紧凑排列在 class 文件中中间没有分隔符,这使得 class 文件中存储的内容几乎是全部程序运行的程序包括两种类型:无符号数 和 表无符号数属于基本数据类型按照 UTF-8 编码构成的字符串,大小使用 u1/u2/u4/u8 表示1字节、2字节、4字节、原创 2020-11-21 23:58:21 · 327 阅读 · 0 评论 -
JVM(二):Class加载机制
Class 类加载机制类的生命周期包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)类加载过程加载通过全限定类名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口。原创 2020-11-24 11:44:26 · 461 阅读 · 0 评论 -
JVM(四):GC垃圾回收算法
垃圾回收器与内存分配策略1.1 起源Lisp是第一门开始使用内存动态分配和垃圾收集技术的语言作者John McCarthy思考过垃圾收集需要完成的哪三件事?哪些内存需要回收?什么时候回收?如何回收?程序计数器、虚拟机栈、本地方法区随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出,有条不紊的执行着出栈和进栈的操作,这几个内存分配具有确定性,不需要考虑内存回收的问题堆和方法区这两个区域则由很多的不确定性:一个接口的多个实现类内存需要可能不一样…只有处于运行期间,我们才能知道程序创建哪原创 2020-09-12 16:31:46 · 4990 阅读 · 0 评论