2021
08-08
08-08
Java JVM运行时数据区(Run-Time Data Areas)
目录1、官网概括2、图例和思维导图3、方法区(MethodArea)4、堆(Heap)5、Java虚拟机栈6、栈帧(StackFrame)7、程序计数器(ThepcRegister)8、本地方法栈(NativeMethodStacks)1、官网概括引用官网说法:TheJavaVirtualMachinedefinesvariousrun-timedataareasthatareusedduringexecutionofaprogram.SomeofthesedataareasarecreatedonJavaVirtualMachinestart-upandaredestroyedonly...
继续阅读 >
JVM的体系结构图先来看一下JVM的体系结构,如下图:JVM的位置JVM的位置,如下图:JVM是运行在操作系统之上的,与硬件没有直接的交互,但是可以调用底层的硬件,用JIN(Java本地接口调用底层硬件)JVM结构图中的classfiles文件classfiles文件,是保存在我们电脑本地的字节码文件,.java文件经过编译之后,就会生成一个.class文件,这个文件就是classfiles所对应的字节码文件,如下图:JVM结构图中的类加载器ClassLoader的解释&nb...
1.背景Java语言相比于C和C++,一个最大的特点就是不需要程序员自己手动去申请和释放内存,这一切交由JVM来完成。在Java中,运行时的数据区域分为程序计数器、Java虚拟机栈、本地方法栈、方法区和堆。其中,程序计数器、虚拟机栈和本地方法栈是线程私有的,线程销毁后自动释放。垃圾回收的行为发生在堆和方法区,主要是堆,而堆中存储的主要是对象。那么自然而然地就会有这么几个问题,哪些对象可以被回收?通过什么方式回收?本文...
是什么字符串常量池是JVM中的一个重要结构,用于存储JVM运行时产生的字符串。在JDK7之前在方法区中,存储的是字符串常量。而字符串常量池在JDK7开始移入堆中,随之而来的是除了存储字符串常量外,还可以存储字符串引用(因为在堆中,引用堆中的字符串常量很方便,所以可以存储引用)。这使得很多字符串的操作在JDK7中和在之前的版本中执行是不同的结果。这也是为什么字符串相关的问题是如此具有迷惑性的原因之一。底层String:...