![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 81
*南夕~
这个作者很懒,什么都没留下…
展开
-
Synchronized同步锁实现机制
Synchronized同步锁实现机制 在开始学习多线程的时候,Synchronized关键字可以解决线程的安全问题,也就是在同一时间只有一个线程可以执行代码块 其实现依赖于JVM虚拟机,虚拟机也对其进行了优化,不同的情况下,给对象头加不同的锁。 对象头:java对象在内存中存储的时候为了增加对象的一些功能,这些标记形成了对象头,由两部分组成class pointer和type。 在大多数情况下,虽然我们加了Synchronized同步锁,但是或许在一个时间段,只有一个线程去执行这段代码,在此,jvm虚拟机原创 2020-09-15 00:56:27 · 433 阅读 · 0 评论 -
虚拟机类加载机制(Java)
类加载机制:虚拟机把class文件加载到内存,并且对数据进行校验、转换解析和初始化,经过这些步骤最终形成可以被虚拟机直接使用的Java类型。 类加载的时机 类从加载到虚拟机内存中到最终卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用 (Using)和卸载(Unloading)7个阶段。 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须原创 2020-06-27 17:13:48 · 151 阅读 · 0 评论 -
Java内存区域
Java虚拟机在运行的时候会将其所管理的内存划分为几个区域,由下图可以清楚地看到有的区域是线程共有的,有的区域是线程私有的 线程私有的内存区域 程序计数器 这部分是一块小的内存空间,它是用来记录当前线程所执行的字节码指令的地址。我们知道线程是占用CPU执行时间的基本单位,线程间的切换是采用时间片轮转调度的方式,当时间片再次切换回来的时候,就可以从当时切换出去的位置继续执行,这个位置的地址就是程序计数器来记录的。 但是我们需要注意的是,如果线程执行的是一个Java代码,程序计数器记录的就是正在执行的虚拟机字节原创 2020-06-26 21:32:17 · 125 阅读 · 0 评论 -
理解JVM垃圾回收机制(GC)
Garbage Collection(GC),Java进程在启动之后就会自动创建垃圾回收线程,来对无用的内存空间进行回收。 这个时候就要考虑是三件事:哪个部分的内存需要回收,什么时候进行回收,怎样回收这块内存 内存回收时机 1、显式的调用System.gc(),这个方式仅仅是告诉垃圾收集器打算进行垃圾收集(FGC),而垃圾收集器进不进行收集是不确定的,但是大多数情况下会进行FGC。但是一般不使用这个方法,让JVM自己管理它的内存 2、JVM垃圾回收机制自己决定 1)进行对象的创建,需要分配内存空间,内存空间原创 2020-06-24 14:45:45 · 939 阅读 · 0 评论