
JVM
我咋这么优秀呢
这个作者很懒,什么都没留下…
展开
-
锁消除和锁粗化
锁消除和锁粗化 锁消除和锁粗化是虚拟机对低效的锁操作而进行的一个优化。 锁消除 简单来说,锁消除就是虚拟机根据一个对象是否真正存在同步情况,若不存在同步情况,则对该对象的访问无需经过加锁解锁的操作。(比如说程序员使用了StringBuffer的append方法,因为append方法需要判断对象是否被占用,而如果代码不存在锁的竞争,那么这部分的性能消耗是无意义的。于是虚拟机在即时编译的时候就...原创 2019-12-03 11:18:41 · 2764 阅读 · 0 评论 -
synchronized&volatile&synchronized原理
synchronized&volatile&synchronized原理 Synchronized&volatile Synchronized本质上是解决对共享变量的访问顺序问题。 多线程环境下,方法内的变量是线程安全的。 多个线程同时处理一个实例,这个实例内的变量是不安全的。 多个线程注入同一个类的不同实例,实例中的变量是安全的。 Synchroniz...原创 2019-12-02 14:16:19 · 259 阅读 · 0 评论 -
深入理解JVM-3
深入理解JVM-3 这部分说下执行完类加载机制后的JVM的五个区域 程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而死。 Java堆和方法区不一样,只有在程序运行期间才知道会创建哪些对象,这部分内存的分配和回收都是动态的。 内存回收 判断对象是否存活的算法 引用计数法:给对象添加一个引用计数器,每当有一个地方引用时,引用计数器加1,当引用失效时,引用计数器减1,任何时刻引用计数...原创 2019-11-27 14:06:26 · 143 阅读 · 0 评论 -
深入理解JVM-4
对象访问 在Java语言中,对象访问是如何进行的?对象访问在Java语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会涉及Java栈、Java堆、方法区这三个最重要的内存区域之间的联系,如: Object obj = new Object(); 假设这句代码出现在方法体中,那“Object obj”这部分的语义将会反映到Java栈 的本地变量表中,作为一个reference类...原创 2019-11-26 14:47:47 · 204 阅读 · 0 评论 -
深入理解JVM-2
深入理解JVM-2 什么是类加载 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的加载机制。Class文件由类加载器加载后,在JVM中将形成一份描述Class结构的元信息对象,通过元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象...原创 2019-10-30 09:48:56 · 225 阅读 · 0 评论 -
深入理解JVM-1
深入理解JVM-1 JVM是什么? JVM是Java Virtual Machine的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。简单来说JVM就是用来解析和运行Java程序 学习JVM的原因 程序调优 不同的程序(业务场景)需要不同的jvm配置,比如设置不同的垃圾收集器、设置新生代和老生代的内存配置和占比,不同的配置对于...原创 2019-10-29 13:43:13 · 207 阅读 · 0 评论