JVM
匣与桔
你有多努力就有多优秀。加油!
展开
-
JVM思维导图
对学习JVM做个总结,方便以后复习,贴出来也是给大家提供一个资料。参考周志明老师的《深入理解Java虚拟机》,有什么描述不对的地方还请指出,不胜感激。原创 2020-06-15 22:18:55 · 215 阅读 · 0 评论 -
死磕并发之volatile关键字详解
volatile关键字可以说是java虚拟机提供的最轻量级的同步机制。当一个变量定义为volatile之后,它将具备两种特性:保证此变量对所有线程的可见性。“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。普通变量和volatile关键字修饰的变量都是依赖主内存作为传递媒介的方式实现可见性的。唯一的区别就是: volatile修饰的变量保证每次修改后...原创 2020-05-04 23:35:01 · 180 阅读 · 0 评论 -
死磕并发之java内存模型(JMM)
了解虚拟机的并发问题之前我们首先先了解下物理机对并发的处理方案由于计算机的存储设备与处理器的运算速度有几个数量级的差距(也就是内存和cpu的差距),所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理器就无须等待缓慢的内存读写了。处...原创 2020-05-04 23:29:54 · 136 阅读 · 0 评论 -
强引用、软引用、弱引用、虚引用有什么区别?
不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。强引用: 强引用类就是指在代码中普遍存在的,类似于Object object = new Object();只要强引用还在,垃圾回收器就永远不会回收被引用的对象,即使发生OOM,如果没有其他引用关系,只要超过了引用的作用于或者显式的将相应引用赋值为null,就可以被垃圾回收器回收掉。软引用...原创 2020-03-22 18:18:48 · 1477 阅读 · 0 评论 -
浅谈JVM:运行时数据区域
运行时数据区域分为:1.程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依靠这个计数器来完成。2.虚拟机栈1.线程私有,生命周期与线程相同。虚拟机栈描述的是jav...原创 2019-01-31 20:46:48 · 148 阅读 · 0 评论 -
垃圾收集算法
一、标记--清除算法标记清除算法分为“标记”、“清除”两个阶段: 标记:首先标记出需要回收的对象。 清除:在标记完成后统一回收所有被标记对象。缺点: 1.效率不足:标记、清除两阶段效率都不高。 2.空间问题:标记清除后会产生大量的空间碎片,空间碎片太多可能会导致程序运行中分配大对象时 无法找到足够的内存空间而提前触...原创 2019-03-31 21:02:15 · 101 阅读 · 0 评论 -
jvm参数
参数 默认值 使用介绍 DisableExplicitGC 默认关闭 忽略来自System.gc()方法触发的垃圾收集 ExplicitGCInvokes Concurrent 默认关闭 当收到来自System.gc()方法提交的垃圾收集申请时,使用CMS收集器进行收集 UseSerialGC Client模式的虚拟机默认开启,其他模式关闭 ...翻译 2019-05-22 20:08:57 · 532 阅读 · 0 评论