如何通过汇编码解析Java对象创建的详细过程?

2026-05-26 06:491阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

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

如何通过汇编码解析Java对象创建的详细过程?

源码:javaclass T { int m=8; T t=new T();}

源码:

class T { int m = 8; } T t = new T();

汇编码:

0 new #2 <T> 3 dup 4 invokespecial #3 <T.<init>> 7 astore_1 8 return

new #2

申请内存,在堆里面创建一个新对象。

半初始化,新建对象中的m值是0。

dup

复制操作,因为invokespecial会消耗一份引用,所以先复制一份

invokespecial

4 invokespecial #3 <T.>

init是调用它的构造方法。

此时对象中的m值是8。

astore_1

将符号和对象建立关联,即t和堆中的对象。

其实很简单,今天看一个视频说了半天。。。

知识点补充:java对象的创建过程

大家都知道,java使用new 关键字进行对象的创建,但这只是从语言层次上理解了对象的创建,下边我们从jvm的角度来看看,对象是怎么被创建出来的,即对象的创建过程。

阅读全文

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

如何通过汇编码解析Java对象创建的详细过程?

源码:javaclass T { int m=8; T t=new T();}

源码:

class T { int m = 8; } T t = new T();

汇编码:

0 new #2 <T> 3 dup 4 invokespecial #3 <T.<init>> 7 astore_1 8 return

new #2

申请内存,在堆里面创建一个新对象。

半初始化,新建对象中的m值是0。

dup

复制操作,因为invokespecial会消耗一份引用,所以先复制一份

invokespecial

4 invokespecial #3 <T.>

init是调用它的构造方法。

此时对象中的m值是8。

astore_1

将符号和对象建立关联,即t和堆中的对象。

其实很简单,今天看一个视频说了半天。。。

知识点补充:java对象的创建过程

大家都知道,java使用new 关键字进行对象的创建,但这只是从语言层次上理解了对象的创建,下边我们从jvm的角度来看看,对象是怎么被创建出来的,即对象的创建过程。

阅读全文