Java对象创建一定是在堆上分配吗?

导读:本篇文章讲解 Java对象创建一定是在堆上分配吗?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

我们假设一个方法被频繁的调用,而这个方法又会创建出大量的对象,这些对象都在堆上创建这样就会引发频繁的Gc。显然这样是不好的。

而有栈上分配来解决这个问题。

栈上分配的好处就是当方法销毁时对象一同销毁 就不需要gc 从而解决该问题

逃逸分析

对于栈上分配我们要求对象是内存占用小的 且不逃逸的 如果该实例不被外部方法调用 或 被该方法返回的话 则我们说该对象是不逃逸的

如果对象的内存占用过大

JVM不会创建该对象。将该对象成员变量分解若干个被这个方法使用的成员变量所代替,这些代替的成员变量在栈帧或寄存器上分配空间。
换句话说,我们可以理解为:把对象拆分成若干小块分开存储。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99643.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!