本地线程分配缓冲(TLAB)
Java虚拟机遇到 new 指令时,需要在堆内存上为新对象分配内存空间。如果堆是规整的,一边是分配过的内存,一边是空闲内存,那只要在中间用一个指针隔开,为新对象分配内存时,指针往后移动相应的空间距离即可。
Java虚拟机遇到 new 指令时,需要在堆内存上为新对象分配内存空间。如果堆是规整的,一边是分配过的内存,一边是空闲内存,那只要在中间用一个指针隔开,为新对象分配内存时,指针往后移动相应的空间距离即可。
在 Java虚拟机(二)内存模型和对象创建 这一篇中,我们知道 Java 虚拟机的内存模型包含五个部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域也叫运行时数据区域(Runtime Data Area),他们是数据的存储空间。既然是存储空间,那就有可能达到存满的时候,因此,JVM必须配备一个垃圾回收器(Garbage Collection, GC),用于不定期地回收不再需要的内存空间。
class 文件是javac编译器编译后生成的二进制文件,全部是连续的0/1。可以把 class 文件中的内容分为两种类型:
总而言之,class文件中的数据要么是单个值,要么是二维表。
Java的理念是“一次编译,到处运行”。我们平时编写的 Java 代码,经过Java编译器编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机(Java Virtual Machine,JVM) 就是负责将字节码文件翻译成特定平台下的机器码然后运行的软件,其本身是由C/C++编写。