JVM对象创建步骤简述及内存分配方式
后端知识库(八股文大全 没事的时候再看)JVM1. JVM 对象创建步骤流程是一个后端开发人员需要非常了解的重要知识点。在Java应用程序中,对象的创建是一个非常基础且频繁的操作,因此理解JVM如何进行对象创建的步骤流程对于优化程序性能和避免内存泄漏等问题都非常重要。具体的创建步骤可以总结为以下几个关键步骤: 第 1 步:类加载检查 当虚拟机遇到一个new指令时,首先会检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用的类是否已经被加载、解析、初始化。如果没有进行加载,那么就需要先进行类的加载。类加载是指将类的字节码文件加载到内存,并为之创建一个Class对象的过程。这是对象创建的第一步,确保所需的类已经被加载到内存中。 第 2 步:分配内存 类加载检查通过之后,接下来进行新生对象的内存分配。对象生成需要的内存大小在类加载完成后便可确定,为对象分配空间等同于在Java堆中划分出一块确定大小的内存。内存大小的划分可以分为两种情况。一种是JVM的内存是规整的,所有的使用的内存都放到一边,空闲的内存在另外一边,中间放一个指针作为分界点的指示器。这种情况下内存的分配比较简单,只要将指针向空闲空间那边挪动一段与对象大小相同的距离。另一种情况是JVM的内存不是规整的,也就是说已使用的内存与未使用的内存相互交错。这时候就需要维护一张表,用于记录那些内存可用,在分配的时候从列表中找到一块足够大的空间。这两种情况的内存分配方式各有特点,但都是为了为新的对象分配足够的内存空间。 第 3 步:初始化 对象的内存分配完成后,接下来是对象的初始化。在初始化阶段,虚拟机会对对象进行必要的设置,比如将对象的成员变量初始化为0或null。这一步确保了对象在被创建后处于一个合法的初始状态,可以在需要的时候立即使用。 第 4 步:构造函数 对象的初始化完毕后,接下来是调用对象的构造函数。构造函数是用来对对象进行进一步的初始化工作,比如对成员变量赋初值、执行一些特定的操作等。构造函数的具体内容由程序员根据对象的需求来定义,可以进行各种初始化工作。 总结来说,JVM对象创建的步骤流程包括类加载检查、内存分配、初始化和构造函数。这些步骤保证了对象在被创建后能够被正确地初始化和准备好在程序中被使用。对于后端开发人员来说,了解这些步骤对于理解Java程序运行原理和优化程序性能都非常重要。因此,建议后端开发人员在闲暇之余再次阅读JVM对象创建的相关知识,加深对其的理解和掌握。
![](https://csdnimg.cn/release/download_crawler_static/87525657/bg10.jpg)
![](https://csdnimg.cn/release/download_crawler_static/87525657/bg11.jpg)
![](https://csdnimg.cn/release/download_crawler_static/87525657/bg12.jpg)
![](https://csdnimg.cn/release/download_crawler_static/87525657/bg13.jpg)
![](https://csdnimg.cn/release/download_crawler_static/87525657/bg14.jpg)
剩余352页未读,继续阅读
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)