logo头像

路漫漫兮其修远兮

Java虚拟机

Java虚拟机(七):编译及优化

1 什么是编译“编译”这个词汇在各种关于编程语言的资料中都能看到,那究竟什么是编译呢?简单地说,编译是一个行为,是一个将一种语言翻译成另一种语言的行为,而实现这个行为的东西就是“编译器”。例如,C语言编译器会将C语言源代码翻译成汇编代...

Java虚拟机(六):类加载机制

大家都知道,我们编写的Java类经过编译器编译后会生成class文件,class文件描述了类的各种信息,最终都要加载到内存中才能运行使用,那虚拟机是如何加载这些class文件的呢?加载又有哪些过程呢?是否程序一启动就把所有的类都加载到...

Java虚拟机(五):性能监控和分析工具

1 概述在之前的文章,我们了解了Java内存布局、内存模型、对象模型和垃圾回收的知识。在实际生产中,绝大多数Java开发者都不会参与到JVM的开发中,那我们为什么要理解JVM呢?因为我们要排查、解决生产中出现的问题,在理解了理论知识的...

Java虚拟机(四):垃圾回收

1 什么是垃圾回收Java包含了自动内存管理机制,使得我们不用像C/C++那样为每个malloc/new都配对一个free/delete操作。当代码复杂的时候,会非常容易遗漏free/delete操作,这样会使得内存无法被释放,...

Java虚拟机(三):Java对象模型

1 什么是Java对象Java是一门面向对象语言,对象是其最基本的一个组件,在Java程序运行过程中无时无刻不在创建对象、销毁对象,有些对象的生命周期非常短暂(例如在方法内部创建的对象,一般在方法调用之后不长的时间内会被回收销毁...

Java虚拟机(二):Java内存模型

1 基本概念在上一篇文章Java内存区域 中,我们讲了JVM为了更好的管理内存,将Java进程的内存划分成了几个功能、用途不同的区域,所以很多人会认为划分后的内存布局就是Java内存模型。严格来说,这个说法是不准确的,不过大家在...

Java虚拟机(一):Java内存区域

1 什么是Java内存区域总所周知,现代计算机中的程序要想得到执行,得先将代码载入内存中,程序在运行时产生的数据也会放置在内存中。为了更好的管理内存中的数据,JVM规范规定了几个运行时数据区域,这些区域都有各自的用途以及创建和销...