目录
一、Java运行时内存分配
Java内存池通常分为以下几个部分:
1. 堆内存(Heap Memory):最大的内存池,用于存储所有对象实例和数组。堆内存是可扩展的,它的大小可以通过启动JVM时的参数进行调整。
2. 方法区(Method Area):用于存储类信息、常量、静态变量和即时编译器编译后的代码等数据的内存区域。方法区也是可扩展的,所以也可能抛出OutofMemoryError;
3. 本地方法栈(Native Method Stack):本地方法栈是Java虚拟机执行本地方法(Native Method)时使用的内存区域。本地方法是使用本地语言(如C、C++等)编写的方法,需要在运行时通过JNI接口调用。本地方法栈也是可扩展的。可能抛出StackOverflowError和OutofMemoryError;
4. Java栈(Java Stack):Java栈是用于存储线程执行时的栈帧(Stack Frame)的内存区域。每个线程都有一个独立的Java栈,用于存储线程执行过程中的局部变量和操作数栈等数据。Java栈的大小可以通过启动JVM时的参数进行调整。当栈的深度超过规定深度时,可能抛出StackOverflowError和Outo