JVM/HotSpot
ApacheCrazyFan
巨人的肩膀
展开
-
JVM之 - 深入分析synchronized的JVM实现
本文转载自:http://www.jianshu.com/p/c5058b6fe8e5 深入分析synchronized的JVM实现 java内部锁synchronized的出现,为多线程的并发执行提供了一个稳定的环境,有效的防止多个线程同时执行同一个逻辑,本文不会讲如何使用synchronized,以HotSpot1.7的虚拟机为例,对synchronized的实现进行深入分析。转载 2017-01-03 14:41:55 · 2343 阅读 · 0 评论 -
JVM之 - 深入浅出系列之 - synchronized
深入浅出synchronized synchronized可以保证方法或代码块在运行时,同一时刻只有一个线程可以进入到临界区(互斥性),同时它还保证了共享变量的内存可见性。 Java中的每个对象都可以作为锁。 普通同步方法,锁是当前实例对象。静态同步方法,锁是当前类的class对象。同步代码块,锁是括号中的对象。 先看一个场景 等待 / 通知机制 直接上代码:原创 2017-01-03 14:47:16 · 1000 阅读 · 0 评论 -
JVM之 - Java内存模型
在揭开面纱之前,我们需要认识几个基础概念:内存屏障(memory Barriers),指令重排序,happens-before规则,as-if-serial语义。 什么是 Memory Barrier(内存屏障)? 内存屏障,又称内存栅栏,是一个CPU指令,基本上它是一条这样的指令: 1、保证特定操作的执行顺序。 2、影响某些数据(或则是某条指令的执行结果)的内存可见性。 编译器原创 2017-01-03 14:50:34 · 532 阅读 · 0 评论 -
占小狼之-JVM-JVM源码分析之Java类加载过程
JVM源码分析之Java类加载过程 背景 最近对Java细节的底层实现比较感兴趣,如Java类文件是如何加载到虚拟机的,类对象和方法是以什么数据结构存在于虚拟机中?虚方法、实例方法和静态方法是如何调用的?本文基于openjdk-7的OpenJDK实现Java类在HotSpot的内部实现进行分析。 HotSpot内存划分 在HotSpot实现中,内存被划分成Java堆、方法区原创 2016-12-25 20:25:14 · 1685 阅读 · 0 评论 -
占小狼之-JVM-JVM源码分析之Java对象的创建过程
JVM源码分析之Java对象的创建过程 接着上篇《JVM源码分析之Java类加载过程》,本文将基于HotSpot实现对Java对象的创建过程进行深入分析。 定义两个简单的类AAA和BBB 通过``javap -c AAA```查看编译之后的字节码,具体如下: Java中的new关键字对应jvm中的new指令,定义在InterpreterRunti原创 2016-12-25 20:32:14 · 1527 阅读 · 0 评论 -
JVM-由常量池 运行时常量池 String intern方法想到的(三)之String内存模型
由常量池 运行时常量池 String intern方法想到的(三)之String内存模型 在这篇博文中描述的,所有在运行时常量池中出现的字符串其实都是一个String对象。因为,java是一种强类型的语言,要求每一种变量都要有具体的数据类型。但是基本数据类型存放的不是对象(String不属于基本数据类型)。基本数据类型的常量在运行时常量池中存放的是字面值。貌似JVM会自动将boolean、byt转载 2016-12-26 19:58:05 · 1444 阅读 · 0 评论 -
JVM之-GC垃圾收集器(一)
JVM源码分析之堆内存的初始化 前言 Java堆是被所有线程共享的一块内存区域,所有对象和数组都在堆上进行内存分配。为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代、老年代和永久代(1.8中无永久代,使用metaspace实现)三块区域。 堆初始化 Java堆的初始化入口位于Universe::initialize_heap方法中,实现如下: 其中U原创 2016-12-29 13:48:39 · 626 阅读 · 0 评论 -
JVM/HotSpot-Java对象头的HotSpot实现分析
java对象头的HotSpot实现分析 HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。 对象头 对象头包括两部分:Mark Word 和 类型指针。 Mark Word Mark Word用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,占用内存大小与虚拟机位长一原创 2016-12-29 14:10:57 · 1220 阅读 · 0 评论 -
一图读懂JVM架构解析
每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JVM分析字节码,解释并执行它。作为开发人员,了解JVM的架构是非常重要的,因为它使我们能够编写出更高效的代码。本文中,我们将深入了解Java中的JVM架构和JVM的各个组件。 JVM 虚拟机是物理机的软件实现。Java的设计理念是WORA(Write On转载 2016-12-31 23:11:56 · 3025 阅读 · 1 评论