![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
zcz5566719
这个作者很懒,什么都没留下…
展开
-
【JVM】内存模型与优化并发操作
文章目录JMM与内存交互内存交互可见性、重排序、原子性线程安全锁优化自旋锁与自适应自旋锁消除锁粗化,轻量化锁,偏向锁 JMM与内存交互 Java内存模型的主要目的是定义程序中各种变量的访问规则。Java内存模型的意义,在不同的平台上实现读写的一致性。尤其是对于并发问题。主内存与工作内存的交互。 主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。 Java内存模型规定了: 所有的变量都存储在主内存中。包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与原创 2020-10-18 16:53:16 · 131 阅读 · 0 评论 -
【JVM】垃圾回收
文章目录垃圾回收概述引用计数法可达性分析法(根搜索法)引用分类 垃圾回收概述 什么是垃圾:内存中不在被使用到的内存空间就是垃圾。 引用计数法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 优点:实现简单、效率高; 缺点:不能解决对象之间的循环引用。 可达性分析法(根搜索法) 通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过 程所走过的路径称为“引用原创 2020-10-17 18:22:43 · 141 阅读 · 0 评论 -
【JVM】字节码执行引擎
文章目录字节码执行引擎栈帧、局部变量表和运行期间操作数栈的交互方法调用、静态分配和动态分配 字节码执行引擎 功能:输入字节码文件,然后对字节码进行解析并处理,最后输出执行的结果。 实现方法:解释器直接解释或者即时编译生成本地代码,编译执行。 栈帧、局部变量表和运行期间操作数栈的交互 栈帧:方法调用和方法执行,随着方法调用产生和结束。存储了局部变量,操作数栈,动态链接,方法返回地址等信息。 局部变量表:存放方法参数和方法内部的局部变量,以slot为单位。对于实例方法,0位存储的this;静态方法不会有原创 2020-09-24 21:38:34 · 90 阅读 · 0 评论 -
【JVM】Java内存分配
文章目录JVM简化架构线程私有程序计数器:Java栈本地方法栈线程共享Java堆方法区交互关系对象in内存对象的结构对象的创建对象的访问定位Java堆的参数Java堆的参数 JVM简化架构 线程私有 程序计数器: 作用:存储下一条指令的地址;创建:创建线程时候创建,因此是线程私有的 执行本地(native)方法时,程序计数器为空(Undefined)。比较小的内存空间,虚拟机中唯一没有规定OOM的区域。 Java栈 栈由一系列栈帧构成,栈帧时用来保存一个方法的局部变量表、操作数栈、动态连接、方法出口。 其原创 2020-09-20 22:09:33 · 96 阅读 · 0 评论 -
【JVM】类加载机制
文章目录类的生命周期加载连接:初始化类初始化:接口初始化:卸载类加载器双亲委派模型定义代码实现:命名空间破坏双亲委派 类的生命周期 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历 加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化 (Initialization)、使用(Using)和卸载(Unloading 七个阶段, 其中验证、准备、解析三个部分统称为连接(Linking)。 加载,验证,准备,初原创 2020-09-19 22:25:46 · 67 阅读 · 0 评论