new一个对象背后,竟隐藏着哪些引人入胜的故事?

2026-05-27 20:180阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

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

new一个对象背后,竟隐藏着哪些引人入胜的故事?

一、前言作为一名Java开发工程师,每天要处理上千个对象。你或许会问:我没有对象吗?

二、没有对象?

那就算没有,那就new一个。GirlFriend gf=new GirlFriend();

三、不会这么容易吧?

当然不会!那么,GirlF呢?


一、前言

作为一名java开发工程师,每天要处理上千个对象,你居然说我没对象?

就算没有对象,那就new一个呗。

GirlFriend gf = new GirlFriend();

不会就这么容易吧?当然不会!

那么GirlFriend对象到底是怎么产生的呢?


二、类加载

当遇到new指令时,jvm首先去常量池寻找该类的符号引用,找不到,则执行类加载。

以下是类加载各个阶段的主要任务,现在记不住也没有什么关系。


1. 装载

我觉得这里使用装载更好一点。第一,可以避免与类加载过程中的“加载”混淆;第二,装载体现的就是一个“装”字,仅仅是把货物从一个地方搬到另外一个地方而已,而这里的加载,却包含搬运货物、处理货物等一系列流程。

装载阶段,将.class字节码文件的二进制数据读入内存中,然后将这些数据翻译成类的元数据,元数据包括方法代码,变量名,方法名,访问权限与返回值,接着将元数据存入方法区。最后会在堆中创建一个Class对象,用来封装类在方法区中的数据结构,因此我们可以通过访问此Class对象,来间接访问方法区中的元数据。

阅读全文

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

new一个对象背后,竟隐藏着哪些引人入胜的故事?

一、前言作为一名Java开发工程师,每天要处理上千个对象。你或许会问:我没有对象吗?

二、没有对象?

那就算没有,那就new一个。GirlFriend gf=new GirlFriend();

三、不会这么容易吧?

当然不会!那么,GirlF呢?


一、前言

作为一名java开发工程师,每天要处理上千个对象,你居然说我没对象?

就算没有对象,那就new一个呗。

GirlFriend gf = new GirlFriend();

不会就这么容易吧?当然不会!

那么GirlFriend对象到底是怎么产生的呢?


二、类加载

当遇到new指令时,jvm首先去常量池寻找该类的符号引用,找不到,则执行类加载。

以下是类加载各个阶段的主要任务,现在记不住也没有什么关系。


1. 装载

我觉得这里使用装载更好一点。第一,可以避免与类加载过程中的“加载”混淆;第二,装载体现的就是一个“装”字,仅仅是把货物从一个地方搬到另外一个地方而已,而这里的加载,却包含搬运货物、处理货物等一系列流程。

装载阶段,将.class字节码文件的二进制数据读入内存中,然后将这些数据翻译成类的元数据,元数据包括方法代码,变量名,方法名,访问权限与返回值,接着将元数据存入方法区。最后会在堆中创建一个Class对象,用来封装类在方法区中的数据结构,因此我们可以通过访问此Class对象,来间接访问方法区中的元数据。

阅读全文