2016 - 2025

感恩一路有你

java中栈和堆的区别 jvm堆和栈的区别?

浏览量:1778 时间:2021-03-14 05:56:41 作者:admin

jvm堆和栈的区别?

1. 堆栈:每当启动一个新线程时,Java虚拟机都会为它分配一个Java堆栈。JVM将只在Java堆栈上执行两个操作:堆栈按下或以堆栈帧为单位退出堆栈。每个线程都包含一个堆栈区域,其中只存储基本数据类型的对象和自定义对象(而不是对象)的引用,对象存储在堆栈区域中。

2. 堆:存储所有对象,每个对象都包含相应的类信息——类的目的是获取操作指令。JVM中的所有线程只共享一个堆。堆不存储基本类型和对象引用,只存储对象本身。

堆栈区别?

堆栈:它是一种“先进,后出”的数据结构。它通常用于在方法(函数)中保存参数和局部变量。在Java中,所有基本类型和引用类型都存储在堆栈中。堆栈中数据的生存空间通常在当前范围内(即{…}包围的区域)

Heap:它是可以动态应用的内存空间(可用内存空间的链表由操作系统维护)。C中malloc语句生成的内存空间在堆中。

在Java中,new用于所有应用程序,XXX()构造的对象存储在堆中。当垃圾收集器检测到某个对象未被引用时,它将自动销毁该对象。因此,从理论上讲,Java中对象的生存空间是没有限制的。只要有一个引用类型指向它,它就可以在任何地方使用

举个简单的例子。每次调用方法时,都会在堆栈中创建一个堆栈帧,以保存方法中的局部变量,例如主方法中的测试变量。但是,新方法将在堆中创建对象,然后将堆地址保存在测试变量中。在test1方法中,B变量直接存储在堆栈帧中,因为它是基本类型。调用test1方法时,堆栈帧会自动弹出,堆栈中的变量也会被回收,B和test变量也会被回收,但堆中的对象需要在垃圾回收期间被回收。当JVM检测到根对象没有引用测试对象时,它将执行垃圾收集。

java中栈和堆的区别 java栈的使用 java堆栈详解

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。