Java虚拟机(五)JVM参数和调优

本地线程分配缓冲(TLAB)

Java虚拟机遇到 new 指令时,需要在堆内存上为新对象分配内存空间。如果堆是规整的,一边是分配过的内存,一边是空闲内存,那只要在中间用一个指针隔开,为新对象分配内存时,指针往后移动相应的空间距离即可。

pointer_move

阅读更多

Java虚拟机(四)垃圾回收策略

GC.png

Java虚拟机(二)内存模型和对象创建 这一篇中,我们知道 Java 虚拟机的内存模型包含五个部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域也叫运行时数据区域(Runtime Data Area),他们是数据的存储空间。既然是存储空间,那就有可能达到存满的时候,因此,JVM必须配备一个垃圾回收器(Garbage Collection, GC),用于不定期地回收不再需要的内存空间。

阅读更多

Java虚拟机(三)Class文件结构

class 文件简介

class 文件是javac编译器编译后生成的二进制文件,全部是连续的0/1。可以把 class 文件中的内容分为两种类型:

  1. 无符号数:表示class文件中的值,没有符号,但有长度。u1、u2、u4、u8 (u1表示1字节的无符号数)
  2. :无符号数要么单独存在,要么多个组合成为二维表。

总而言之,class文件中的数据要么是单个值,要么是二维表。

阅读更多

Java虚拟机(一)JVM 基础和类的加载

什么是Java虚拟机

Java的理念是“一次编译,到处运行”。我们平时编写的 Java 代码,经过Java编译器编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机(Java Virtual Machine,JVM) 就是负责将字节码文件翻译成特定平台下的机器码然后运行的软件,其本身是由C/C++编写。

阅读更多