• jvm源码解读--03 常量池的解析ConstantPool

    时间:2023-12-03 11:41:27

    先看bt栈(gdb) bt#0 ConstantPool::allocate (loader_data=0x7fe21802e868, length=87, __the_thread__=0x7fe21800b800) at /home/atzhang/atzhang/openjdksource/...

  • jvm源码解读--05 常量池 常量项的解析JVM_CONSTANT_Utf8

    时间:2023-12-03 11:24:42

    当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处 第二篇

    时间:2023-12-03 10:53:09

    先打断点systemDictionary.cpp 1915行Universe::fixup_mirrors(CHECK);进入void Universe::fixup_mirrors(TRAPS) { // Bootstrap problem: all classes gets a mirror ...

  • JVM源码分析之堆外内存完全解读

    时间:2023-12-03 10:53:33

    JVM源码分析之堆外内存完全解读寒泉子 2016-01-15 17:26:16 浏览6837 评论0阿里技术协会摘要: 概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-...

  • JVM 源码分析之 javaagent 原理完全解读

    时间:2023-12-03 10:53:02

    转载:https://infoq.cn/article/javaagent-illustrated本文重点讲述 javaagent 的具体实现,因为它面向的是我们 Java 程序员,而且 agent 都是用 Java 编写的,不需要太多的 C/C++ 编程基础,不过这篇文章里也会讲到 JVMTIAg...

  • JVM源码分析之javaagent原理完全解读

    时间:2023-12-03 10:47:36

    概述本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。对于javaagent,或...

  • 从jvm源码看synchronized

    时间:2023-12-03 10:42:33

    从jvm源码看synchronized索引synchronized的使用修饰实例方法修饰静态方法修饰代码块总结Synchronzied的底层原理对象头和内置锁(ObjectMonitor)synchronzied的底层原理synchronized的优化偏向锁轻量级锁轻量级锁膨胀重量级锁自旋编译期间锁...

  • JVM源码分析-类加载场景实例分析

    时间:2023-12-03 10:42:49

    A类调用B类的静态方法,除了加载B类,但是B类的一个未被调用的方法间接使用到的C类却也被加载了,这个有意思的场景来自一个提问:方法中使用的类型为何在未调用时尝试加载?。场景如下:public class Main { static { System.out.println("Ma...

  • jvm源码解读--19 Java的join()方法解读 以及 invokestatic 字节码 执行 流程图

    时间:2023-12-03 10:38:17

  • jvm源码解读--07 创建 fixup_mirrors

    时间:2023-12-03 10:35:02

    通过前面的分析,创建的insttanceKlass 都没放入了java_lang_Class::fixup_mirror_list()这里类的数组里面了,所有的instance列举如下---------------------------------------------list->at(8...

  • JVM源码分析之javaagent原理完全解读--转

    时间:2023-12-03 10:34:11

    原文地址:http://www.infoq.com/cn/articles/javaagent-illustrated概述本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIA...

  • jvm源码解读--18 Java的start()方法解读 以及 wait 和notify流程图

    时间:2023-12-03 10:23:38

    drawwed by 张艳涛 and get info from openjdk8还有一个图...

  • jvm源码解读--15 oop对象详解

    时间:2023-12-03 10:24:37

    (gdb) p obj$15 = (oopDesc *) 0xf3885d08(gdb) p * obj$16 = { _mark = 0x70dea4e01, _metadata = { _klass = 0x2000070e, _compressed_klass = 536872...

  • synchronized的jvm源码分析聊锁的意义

    时间:2023-12-03 09:21:23

    上篇写完了ReentrantLock源码实现,从我们的角度分析设计锁,在对比大神的实现,顺道拍了一波道哥的马屁,虽然他看不到,哈哈。这一篇我们来聊一聊synchronized的源码实现,并对比reentrantLock的实现,相信认真看完一定会对锁的理解更加深入。废话不多说先来一段代码:static...

  • 源码编译OpenJdk 8,Netbeans调试Java原子类在JVM中的实现(Ubuntu 16.04)

    时间:2023-11-22 13:45:09

    一、前言前一阵子比较好奇,想看到底层(虚拟机、汇编)怎么实现的java 并发那块。volatile是在汇编里加了lock前缀,因为volatile可以通过查看JIT编译器的汇编代码来看。但是原子类,本来在jvm中就是汇编实现的,反而没法看。如果能实际跟踪一下断点,应该也算实际验证了。这边基本参照下面...

  • JDK源码中的help GC 与 JVM的可达性算法分析

    时间:2022-12-27 12:19:49

    首先提出一个问题,在下面代码中 help GC 注释的这行代码是什么作用?这只是Jdk1.7 java.util.LinkedList类的一个方法, 完整代码见 Jdk1.7/** * Unlinks non-null first node f. */private E unlinkFirst(No...

  • 分析JVM源码之Thread.interrupt系统级别线程打断

    时间:2022-12-04 10:49:25

    在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程。那么线程挂起和打断的本质究竟是什么,本文就此问题作一个探究

  • JVM源码分析之System.currentTimeMillis及nanoTime原理详解

    时间:2022-10-31 19:38:14

    JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一下,得到如下输出:~/Documents/workspace/Test/src ᐅ /Library...

  • JVM源码分析之Java对象头实现

    时间:2022-09-27 16:52:36

    原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注“365篇原创计划”第十一篇。今天呢!灯塔君跟大家讲:JVM源码分析之Java对象头实现HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。对象头对象头包括两部分:Mark Word 和 类型指针。Mark Wo...

  • jvm源码解读--13 gc_root中的栈中oop的mark 和copy 过程分析

    时间:2022-06-01 19:34:57

    粘贴源码package com.test;import java.util.Random;public class Test { static int number=12; private int age; private String name; public Test(i...