简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在前面文章了解到Java对象实例是如何在Java堆中创建的,下面我们详细了解Java普通对象创建后,在HotSpot虚拟机Java堆中的内存布局是怎样的,可以分为3个区域:对象头(Header)、实例数据(Instance)和对齐填充(Padding)。
Java编译涉及到非常多的知识层面:编译原理、语言规范、虚拟机规范、本地机器码优化等;下面我们先来看下Java体系中的三种编译方式:前端编译、即时编译(JIT编译)、静态提前编译(AOT编译)解它们各有什么优点和缺点,再来看看主流的前端编译+JIT编译方式的运作过程。
Java内存管理:在前面的一些文章了解到javac编译的大体过程、Class文件结构、以及JVM字节码指令,下面我们详细了解Java内存区域:先说明JVM规范定义的JVM运行时分配的数据区有哪些,然后分别介绍它们的特点,并指出给出一些HotSpot虚拟机实现的不同点和调整参数。
下面先来了解Java虚拟机垃圾回收的基础内容:如何判断对象是存活还是已经死亡? 介绍相关的垃圾回收基础算法:引用计数算法、可达性分析算法,以及说明finalize()方法作用,最后再来说说HotSpot虚拟机中实现对象可达性分析的一些问题。
下面我们详细了解Java程序中new一个普通对象时,HotSpot虚拟机是怎么样创建这个对象的,包括5个步骤:相应类加载检查过程、在Java堆中为对象分配内存、分配后内存初始化为零、对对象进行必要的设置、以及执行对象实例方法,最后我们再从JVM指令角度来解释下Java对象创建。
想深入了解Java的运行机制,我们有必要了解HotSpot虚拟机;下面我们先在CentOS6.4 64位系统上编译OpenJDK8源码,然后用gdb断点调试hotspot源码,最后再配置在eclipse上调试hotspot源码;主要包括:1、编译OpenJDK8源码;2、gdb断点进入源码调试hotspot;3、在eclipse上调试hotspot源码;4、配置hotspot调试运行eclipse
下面详细了解JIT编译;从官方JDK中的HotSpot虚拟机的JIT编译器入手,先介绍解释器与JIT编译器是如何配合工作的,认识JIT编译器C1/C2;再看看JIT编译的是什么,以及触发条件是什么;而后再简单介绍JIT编译过程,认识几种编译技术;最后对比Java与C/C++的编译器。
Java虚拟机垃圾回收(三) 7种垃圾收集器主要特点 应用场景 设置参数 基本运行原理在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回收算法》了解到Java虚拟机垃圾回收的几种常见算法。下面先来了解HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Parall...
在前面两篇文章中了解到Java对象实例是如何在HotSpot虚拟机的Java堆中创建的,以及创建后的内存布局是怎样的。下面详细了解在Java堆中的Java对象是如何访问定位的:先来了解reference类型数据是什么,再来了解两种访问方式:使用句柄或者使用直接指针(HotSpot虚拟机使用直接指针)。
Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法 在《Java对象在Java虚拟机中的创建过程》了解到对象创建的内存分配,在《Java内存区域 JVM运行时数据区》中了解到各数据区有些什么特点、以及相关参数的调整,在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回