jvm源码解读--03 常量池的解析ConstantPool
先看bt栈(gdb) bt#0 ConstantPool::allocate (loader_data=0x7fe21802e868, length=87, __the_thread__=0x7fe21800b800) at /home/atzhang/atzhang/openjdksource/...
jvm源码解读--05 常量池 常量项的解析JVM_CONSTANT_Utf8
当index=18的时候JVM_CONSTANT_Utf8 case JVM_CONSTANT_Utf8 : { cfs->guarantee_more(2, CHECK); // utf8_length u2 utf8_lengt...
jvm源码解读--09 创建oop对象,将static静态变量放置在oop的96 offset处 第二篇
先打断点systemDictionary.cpp 1915行Universe::fixup_mirrors(CHECK);进入void Universe::fixup_mirrors(TRAPS) { // Bootstrap problem: all classes gets a mirror ...
JVM源码分析之堆外内存完全解读
JVM源码分析之堆外内存完全解读寒泉子 2016-01-15 17:26:16 浏览6837 评论0阿里技术协会摘要: 概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-...
JVM 源码分析之 javaagent 原理完全解读
转载:https://infoq.cn/article/javaagent-illustrated本文重点讲述 javaagent 的具体实现,因为它面向的是我们 Java 程序员,而且 agent 都是用 Java 编写的,不需要太多的 C/C++ 编程基础,不过这篇文章里也会讲到 JVMTIAg...
JVM源码分析之javaagent原理完全解读
概述本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。对于javaagent,或...
从jvm源码看synchronized
从jvm源码看synchronized索引synchronized的使用修饰实例方法修饰静态方法修饰代码块总结Synchronzied的底层原理对象头和内置锁(ObjectMonitor)synchronzied的底层原理synchronized的优化偏向锁轻量级锁轻量级锁膨胀重量级锁自旋编译期间锁...
JVM源码分析-类加载场景实例分析
A类调用B类的静态方法,除了加载B类,但是B类的一个未被调用的方法间接使用到的C类却也被加载了,这个有意思的场景来自一个提问:方法中使用的类型为何在未调用时尝试加载?。场景如下:public class Main { static { System.out.println("Ma...
jvm源码解读--19 Java的join()方法解读 以及 invokestatic 字节码 执行 流程图
jvm源码解读--07 创建 fixup_mirrors
通过前面的分析,创建的insttanceKlass 都没放入了java_lang_Class::fixup_mirror_list()这里类的数组里面了,所有的instance列举如下---------------------------------------------list->at(8...
JVM源码分析之javaagent原理完全解读--转
原文地址:http://www.infoq.com/cn/articles/javaagent-illustrated概述本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIA...
jvm源码解读--18 Java的start()方法解读 以及 wait 和notify流程图
drawwed by 张艳涛 and get info from openjdk8还有一个图...
jvm源码解读--15 oop对象详解
(gdb) p obj$15 = (oopDesc *) 0xf3885d08(gdb) p * obj$16 = { _mark = 0x70dea4e01, _metadata = { _klass = 0x2000070e, _compressed_klass = 536872...
synchronized的jvm源码分析聊锁的意义
上篇写完了ReentrantLock源码实现,从我们的角度分析设计锁,在对比大神的实现,顺道拍了一波道哥的马屁,虽然他看不到,哈哈。这一篇我们来聊一聊synchronized的源码实现,并对比reentrantLock的实现,相信认真看完一定会对锁的理解更加深入。废话不多说先来一段代码:static...
源码编译OpenJdk 8,Netbeans调试Java原子类在JVM中的实现(Ubuntu 16.04)
一、前言前一阵子比较好奇,想看到底层(虚拟机、汇编)怎么实现的java 并发那块。volatile是在汇编里加了lock前缀,因为volatile可以通过查看JIT编译器的汇编代码来看。但是原子类,本来在jvm中就是汇编实现的,反而没法看。如果能实际跟踪一下断点,应该也算实际验证了。这边基本参照下面...
JDK源码中的help GC 与 JVM的可达性算法分析
首先提出一个问题,在下面代码中 help GC 注释的这行代码是什么作用?这只是Jdk1.7 java.util.LinkedList类的一个方法, 完整代码见 Jdk1.7/** * Unlinks non-null first node f. */private E unlinkFirst(No...
分析JVM源码之Thread.interrupt系统级别线程打断
在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程。那么线程挂起和打断的本质究竟是什么,本文就此问题作一个探究
JVM源码分析之System.currentTimeMillis及nanoTime原理详解
JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一下,得到如下输出:~/Documents/workspace/Test/src ᐅ /Library...
JVM源码分析之Java对象头实现
原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注“365篇原创计划”第十一篇。今天呢!灯塔君跟大家讲:JVM源码分析之Java对象头实现HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。对象头对象头包括两部分:Mark Word 和 类型指针。Mark Wo...
jvm源码解读--13 gc_root中的栈中oop的mark 和copy 过程分析
粘贴源码package com.test;import java.util.Random;public class Test { static int number=12; private int age; private String name; public Test(i...