随笔分类 -  深入学习jvm 虚拟机

摘要:write by 张艳涛 前言: 在学习jvm之前,看过设计模式的书,知道模板方法的设计模式,今天在看java并发编程的艺术里面关于AbstractQueuedSynchronizer 用法,这个就使用了模板方法了,开始没注意到,回想过去的设计模式的知识,才看清楚了,那么模板方法的原理是什么呢?结合 阅读全文
posted @ 2021-06-25 15:58 张艳涛&java 阅读(160) 评论(0) 推荐(0) 编辑
摘要:drawwed by 张艳涛 and get info from openjdk8 还有一个图 阅读全文
posted @ 2021-06-11 11:18 张艳涛&java 阅读(119) 评论(0) 推荐(0) 编辑
摘要:write and debug by 张艳涛 wait()和notify()的通常用法 A线程取得锁,执行wait(),释放锁; B线程取得锁,完成业务后执行notify(),再释放锁; B线程释放锁之后,A线程取得锁,继续执行wait()之后的代码; 关于synchronize修饰的代码块通常,对 阅读全文
posted @ 2021-06-09 12:04 张艳涛&java 阅读(661) 评论(0) 推荐(0) 编辑
摘要:现在不太清楚, public static void main(String[] args) { Object object=new Object(); System.out.println("before synchronized start"); synchronized (object) { 阅读全文
posted @ 2021-05-20 11:12 张艳涛&java 阅读(113) 评论(0) 推荐(0) 编辑
摘要:CAS的意思是campare and sweep比较交换 这个如果不用代码会比较抽象,那么在源码中进行解释 void ATTR ObjectMonitor::enter(TRAPS) { // The following code is ordered to check the most commo 阅读全文
posted @ 2021-05-19 14:20 张艳涛&java 阅读(288) 评论(0) 推荐(0) 编辑
摘要:(gdb) p obj $15 = (oopDesc *) 0xf3885d08 (gdb) p * obj $16 = { _mark = 0x70dea4e01, _metadata = { _klass = 0x2000070e, _compressed_klass = 536872718 } 阅读全文
posted @ 2021-05-18 18:31 张艳涛&java 阅读(380) 评论(0) 推荐(0) 编辑
摘要:进入Eden()->clean()函数 void EdenSpace::clear(bool mangle_space) { ContiguousSpace::clear(mangle_space); set_soft_end(end()); } 进入 void ContiguousSpace::c 阅读全文
posted @ 2021-05-17 12:06 张艳涛&java 阅读(144) 评论(0) 推荐(0) 编辑
摘要:粘贴源码 package com.test; import java.util.Random; public class Test { static int number=12; private int age; private String name; public Test(int i, Str 阅读全文
posted @ 2021-05-14 17:06 张艳涛&java 阅读(210) 评论(0) 推荐(0) 编辑
摘要:jni 本地方法的总结 1,第一步,javah D:\wksp_study\designbook\target\classes> //clas文件所在目录执行 javah -cp D:\wksp_study\designbook\target\classes jni.ObjTest 2,第二部 拷贝 阅读全文
posted @ 2021-04-30 10:28 张艳涛&java 阅读(649) 评论(0) 推荐(0) 编辑
摘要:第一步,在idea中,编写java文件,并且编译 package jni; public class HelloWorld { static { System.loadLibrary("HelloWorld"); } public native static void say(String cont 阅读全文
posted @ 2021-04-29 14:34 张艳涛&java 阅读(206) 评论(0) 推荐(0) 编辑
摘要:先看代码 package com.zyt.jvmbook; public class Girl extends Person{ public Girl() { int a; } @Override public void sayHello() { System.out.println("girl s 阅读全文
posted @ 2021-04-27 18:40 张艳涛&java 阅读(335) 评论(0) 推荐(0) 编辑
摘要:写一个java文件 public static void main(String[] args) { String str1="abc"; String str2 ="abc"; String str3=new String("abc"); boolean b1= str1==str2; boole 阅读全文
posted @ 2021-04-25 12:13 张艳涛&java 阅读(2197) 评论(0) 推荐(1) 编辑
摘要:源码中对于枚举类型WKID的使用 static bool initialize_wk_klass(WKID id, int init_opt, TRAPS); static void initialize_wk_klasses_until(WKID limit_id, WKID &start_id, 阅读全文
posted @ 2021-04-12 11:26 张艳涛&java 阅读(125) 评论(0) 推荐(0) 编辑
摘要:先打断点systemDictionary.cpp 1915行 Universe::fixup_mirrors(CHECK); 进入 void Universe::fixup_mirrors(TRAPS) { // Bootstrap problem: all classes gets a mirro 阅读全文
posted @ 2021-04-09 18:38 张艳涛&java 阅读(187) 评论(0) 推荐(0) 编辑
摘要:之前分析的已经加载的.Class文件中都没有Static 静态变量,所以也就没这部分的解析,自己也是不懂hotspot 将静态变量放哪里去了,追踪源码之后,看清楚了整个套路,总体上来说,可以举例来说对于,java.lang.String的Class文件进行解析,String类有5个变量,其中有俩个静 阅读全文
posted @ 2021-04-09 17:15 张艳涛&java 阅读(156) 评论(0) 推荐(0) 编辑
摘要:通过前面的分析,创建的insttanceKlass 都没放入了java_lang_Class::fixup_mirror_list()这里类的数组里面了,所有的instance列举如下 list->at(8) $3 = 0x7f6d6800f2b8 "java/lang/Object" (gdb) 阅读全文
posted @ 2021-04-08 11:40 张艳涛&java 阅读(135) 评论(0) 推荐(0) 编辑
摘要:进入 // Methods bool has_final_method = false; AccessFlags promoted_flags; promoted_flags.set_flags(0); Array<Method*>* methods = parse_methods(access_f 阅读全文
posted @ 2021-04-01 11:28 张艳涛&java 阅读(141) 评论(0) 推荐(0) 编辑
摘要:当index=18的时候JVM_CONSTANT_Utf8 case JVM_CONSTANT_Utf8 : { cfs->guarantee_more(2, CHECK); // utf8_length u2 utf8_length = cfs->get_u2_fast(); u1* utf8_b 阅读全文
posted @ 2021-03-29 15:10 张艳涛&java 阅读(325) 评论(0) 推荐(0) 编辑
摘要:先看bt栈 (gdb) bt #0 ConstantPool::allocate (loader_data=0x7fe21802e868, length=87, __the_thread__=0x7fe21800b800) at /home/atzhang/atzhang/openjdksource 阅读全文
posted @ 2021-03-27 18:47 张艳涛&java 阅读(484) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示