
JDK
懒猫gg
我很懒!
展开
-
JVM垃圾回收
通过《编译原理》系列文章,我们可以创造出运行环境,然后根据程序的语义直接执行,也可能翻译成中间代码(机器码,汇编码)。这两种方式分别被称为解释执行和编译执行。JVM中的编译器在部分商用虚拟机中(如HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运...原创 2020-03-10 20:41:07 · 534 阅读 · 0 评论 -
JVM方法调用
通过《JVM内存池》,我们已经可以顺利的创建出对象?具体怎么使用。Java Main方法调用自动生成stubThreads::create_vm()《openJdk的启动流程》中的方法 init_globals()–> stubRoutines_init1() StubRoutines::initialize1 StubRoutines::StubGenerator...原创 2020-02-19 23:26:04 · 635 阅读 · 0 评论 -
JVM内存池
JVM内存池根据jconsole工具提供,内存池大致可分为堆 年轻代 survivor space eden space 老年代 old Gen非堆 Metaspace(起始部分 compressed Class space) codeCache结合《内存概述与JAVA进程内存》,进一步得出运行时数据区的组成通过《JVM内存模型》我们对运行时数据有了初步的...原创 2020-02-12 15:05:52 · 1578 阅读 · 0 评论 -
hotspot解释器和JIT
暂时缺省原创 2020-02-05 15:17:56 · 989 阅读 · 0 评论 -
Hotspot 类文件加载、链接和初始化
在熟悉《class文件和字节码解析》和《Java对象内存表示机制》了之后,我们对类有了更进一步的认识,那么类文件是如何变成Hotspot中的Klass了?加载器机制 《类加载机制》一文件中,我们已知道java加载器双亲委派机制,也知道调用loadClass方法可自定义加载类。不管我们在JAVA中通过JNI的方式(ClassLoader JNI接口的实现源码在jdk/src/share/nati...原创 2020-02-05 14:22:04 · 904 阅读 · 0 评论 -
class文件和字节码解析
通过《编译原理》的相关学习,我们知道我们编写的Java代码最终会被翻译成class文件。Class文件格式是JVM自己定义的用于表示Java类的二进制字节流规范,与操作系统本身无关,该文件格式正是Java代码一次编译,跨平台运行的关键。class文件其中u 表示n个无符号字节,如u4 magic 表示magic的取值用4个无符号字节表示,cp_info描述常量池的结构,field_info描...原创 2020-01-30 17:53:17 · 926 阅读 · 0 评论 -
Java对象内存表示机制
前言在《openjdk的启动流程》一文,create_vm方法中initialize_class(vmSymbols::java_lang_Thread(), CHECK_0);//装载threadClassoop thread_object = create_initial_thread(thread_group, main_thread, CHECK_0);//创建第一个thread对象...原创 2020-01-29 17:57:17 · 482 阅读 · 0 评论 -
Hotspot学习利器:HSDB和CLHSDB
目录一、HSDB 1、测试用例:2、Java Threads窗口3、Tools 选项4、windows选项二、CLHSDB1、threads和thread 2、classes和class3、inspect4、 jstack 5、universe6、sca...转载 2020-01-29 17:22:22 · 691 阅读 · 0 评论 -
openjdk的启动流程
从前文《openjdk1.8工程结构》我知道makefile如何编译出我的java命令,同时也告知了程序入口main.cmain.c作用:程序入口位置:openjdk\jdk\src\share\bin\main.c/* * Entry point. *///java虚拟机启动入口函数#ifdef JAVAW //window平台入口char **__initenv;...原创 2020-01-09 15:50:54 · 2151 阅读 · 3 评论 -
openjdk1.8工程结构
关于makefile,请参考《gcc&makefile基础》目录说明openjdk源码中有很多目录,根据功能做了模块化划分,每个目录实现其相应的功能。每个目录下的结构都差不多,分为src(源码)、make(makefile)、test(或没有)、其他特殊目录。openjdk│ common 一些公共文件,比如下载源码的shell脚本、生成make的autoconf...原创 2020-01-02 16:45:50 · 712 阅读 · 0 评论 -
c/c++基础
++原创 2020-01-31 13:54:23 · 198 阅读 · 0 评论 -
Mac下编译openjdk及调试
一、编译环境1. MacOS High Sierra 10.13.22. XCode 9.4.1(Command Line Tools)3. jdk版本:jdk7u71网盘下载 或者通过官网下载4. openjdk: jdk8u-dev 网盘下载地址 或者通过me...转载 2019-11-18 18:54:22 · 1039 阅读 · 1 评论