当Jvm遇到new关键字会发生什么

发布时间:2021-07-13 09:05:54 作者:chen
来源:亿速云 阅读:141

这篇文章主要介绍“当Jvm遇到new关键字会发生什么”,在日常操作中,相信很多人在当Jvm遇到new关键字会发生什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”当Jvm遇到new关键字会发生什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在上一篇我们知道了Jvm的内存划分,这一篇我们来具体分析一下,当我们用new关键字创建一个新对象时,Jvm都做了哪些工作。当虚拟机执行到new指令时,发现它是关键字,于是会检查这个指令参数是否能在常量池中找到相关的引用,并检查这个引用所代表的类是否被加载、解析和初始化过。如果没有被加载,则先执行类的加载过程。当类加载成功后,虚拟机就会为新创建的对象分配内存。分配内存无非就是在Java堆上划出一部分区域来作为新对象的存储空间。但在实际的处理时是比较麻烦的。例如怎么找到空闲的内存,如何划分固定大小内存。我们知道Java虚拟机规范中所说虚拟机中的堆内存可以是连续的也可以是不连续的。所以虚拟机在为对象分配新内存时,就要根据这两种不同的方式来采取不同的实现。这两种方式分别叫作:指针碰撞和空闲列表。正面我们分别看一下它们具体的实现方式。

由于不同的虚拟机所采用的内存分配方式是不同的,所以上述主要说明两种分配内存的方式,虚拟机到底采用哪种方式由不同虚拟机的堆自行决定。

上述的过程只是给对象分配了相关的内存空间,但对象还是空的,内存数据要怎么保存对象的信息呢?在虚拟机中对象在内存中存储主要分3个区域:

当Jvm遇到new关键字会发生什么

对象现在已经创建完了,但它是存储在堆上的,为了方便我们操作堆中的对象,Java是通过栈上的引用数据来操作堆上的具体对象的。这个引用是使用直接指针访问的。堆中要存储这个指针的相关信息,而引用存储的就是该对象的内存地址。

当Jvm遇到new关键字会发生什么

到此,关于“当Jvm遇到new关键字会发生什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 当按下电源之后发生了什么?(详解)----上
  2. new关键字与malloc的区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jvm

上一篇:Spring框架中ResourcePatternResolver接口的用法

下一篇:jdk中ReentrantLock类与Condition类结合的使用方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》