
JVM知识
文章平均质量分 91
懵懵懂懂搬运工
这个作者很懒,什么都没留下…
展开
-
appens-before规则
前言众所周知的并发编程三大特性;原子性、可见性、有序性;但是这些特性的起源你知道吗?可见性:正是由于CPU存在缓存,导致了变量修改的不可见性;原子性:线程切换是基于CPU指令而不是高级语言中的一行代码,线程切换可以发生在任意一条CPU指令执行之前,完成之后,因此只能保证CPU指令的原子性;有序性:最诡异的特性,一行代码被拆分成多个CPU指令,但是为了保持高性能,编译器对其做了排序,可能导致顺序改变。好了,以上的三大特性已经了解了,但是如何解决这些问题呢?正题来了,Java内存模型转载 2021-12-24 13:11:48 · 188 阅读 · 0 评论 -
JVM垃圾回收器
jvm的垃圾回收器有以下几种: Serial、ParNew、Parallel Scavenge、CMS、G1、Serial Old、Parallel Old、ZGC、Epsilon与Shenandoah等,本文主要分享Serial、ParNew、Parallel Scavenge、CMS、G1、Serial Old、Parallel Old。下图展示了 7 种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。接.原创 2021-03-31 14:21:53 · 147 阅读 · 0 评论 -
JVM垃圾回收算法
jvm的垃圾回收算法有以下几种:标记-清除算法 复制算法 标记整理算法 分代收集算法一、标记-清除算法标记-清除(Mark-Sweep)算法可以分为两个阶段:标记阶段:标记出所有可以回收的对象 清除阶段:回收所有已被标记的对象,释放这部分空间。该算法存在如下不足:内存碎片。由于Java虚拟机的堆中对象必须是连续分布的,因此可能出现总空闲内存足够,但是无法分配的极端情况。无法找到足够的连续内存,而不得不提前触发一次垃圾收集动作。 分配效率较低。如果是一块连续的内存空间,那么...原创 2021-03-31 11:03:49 · 336 阅读 · 0 评论 -
JVM内存结构
JVM内存结构 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。如下图:一、堆(Heap) 对于大多数应用来说,Java堆(Ja...原创 2021-03-30 21:55:07 · 213 阅读 · 0 评论