Java对象从创建、初始化、引用、方法调用、内存分配、垃圾回收到最终被回收的全过程是如何实现的?

2026-04-19 07:400阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3673个文字,预计阅读时间需要15分钟。

Java对象从创建、初始化、引用、方法调用、内存分配、垃圾回收到最终被回收的全过程是如何实现的?

Java虚拟机内存组成了解后,启动时会将系统分配给JVM的空间划分为堆、栈、本地方法栈、方法区和程序计数器五个部分。其中:

- 堆:用于存放对象实例,是所有线程共享的。- 栈:用于存放局部变量和方法调用,每个线程有自己的栈。- 本地方法栈:用于存放JVM中调用的本地方法(如C/C++方法)的栈帧。- 方法区:用于存放类信息、常量、静态变量等数据,是所有线程共享的。- 程序计数器:用于记录当前线程执行的字节码的指令地址。

例如:堆:存放new出来的对象。

先了解下Java虚拟机内存组成,当Java虚拟机启动后,会将系统分配给JVM的空间逻辑上划分为堆、虚拟机栈、本地方法栈、方法区、程序计数器五个部分,如下图所示:


堆:放置new出来的对象、数组

虚拟机栈:线程运行前,会给其分配一个线程栈空间,线程中每个方法执行都会生成一个栈帧放入线程栈中,栈帧里面包含局部变量表、操作数栈、动态连接和方法出口四部分。

局部变量表:存储方法中的局部变量

操作数栈:用于赋值或者计算的数据

动态链接:方法执行的入口地址

方法出口:返回调用方法的地址

本地方法栈:与虚拟机栈类似,是调用非java方法的栈

方法区:存储类元信息、常量池

程序计数器:指向线程正在运行的位置

2 Java对象创建

new一个对象的过程如图所示,依次执行类加载检查、分配内存、初始化零值、设置对象头和执行clinit五步。

阅读全文

本文共计3673个文字,预计阅读时间需要15分钟。

Java对象从创建、初始化、引用、方法调用、内存分配、垃圾回收到最终被回收的全过程是如何实现的?

Java虚拟机内存组成了解后,启动时会将系统分配给JVM的空间划分为堆、栈、本地方法栈、方法区和程序计数器五个部分。其中:

- 堆:用于存放对象实例,是所有线程共享的。- 栈:用于存放局部变量和方法调用,每个线程有自己的栈。- 本地方法栈:用于存放JVM中调用的本地方法(如C/C++方法)的栈帧。- 方法区:用于存放类信息、常量、静态变量等数据,是所有线程共享的。- 程序计数器:用于记录当前线程执行的字节码的指令地址。

例如:堆:存放new出来的对象。

先了解下Java虚拟机内存组成,当Java虚拟机启动后,会将系统分配给JVM的空间逻辑上划分为堆、虚拟机栈、本地方法栈、方法区、程序计数器五个部分,如下图所示:


堆:放置new出来的对象、数组

虚拟机栈:线程运行前,会给其分配一个线程栈空间,线程中每个方法执行都会生成一个栈帧放入线程栈中,栈帧里面包含局部变量表、操作数栈、动态连接和方法出口四部分。

局部变量表:存储方法中的局部变量

操作数栈:用于赋值或者计算的数据

动态链接:方法执行的入口地址

方法出口:返回调用方法的地址

本地方法栈:与虚拟机栈类似,是调用非java方法的栈

方法区:存储类元信息、常量池

程序计数器:指向线程正在运行的位置

2 Java对象创建

new一个对象的过程如图所示,依次执行类加载检查、分配内存、初始化零值、设置对象头和执行clinit五步。

阅读全文