在java中,内存分为两种,一种是栈(PC、Stack、Native Stack)内存,另一种是堆(堆、方法区)内存,我来为大家科普一下关于java堆和栈有什么区别 Java中堆与栈的区别?以下内容希望对你有帮助!

java堆和栈有什么区别 Java中堆与栈的区别

java堆和栈有什么区别 Java中堆与栈的区别

在java中,内存分为两种,一种是栈(PC、Stack、Native Stack)内存,另一种是堆(堆、方法区)内存。

栈内存

用来存放在方法中定义的一些基本数据类型的变量和引用类型的变量。当在一段代码块中定义一个变量时,JVM就在栈中为这个变量分配内存空间,当超过变量的作用域后,JVM会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

堆内存

用来存放运行时创建的对象。可以在栈中定义一个特殊的变量,这个变量的取值等于对象在堆内存中的首地址,在栈中的这个特殊的变量就是堆中对象的引用变量,以后可以在程序中使用栈中的引用变量访问堆中的对象。对象在没有引用变量指向它的时候,才变成垃圾,不能被使用,但仍然占着内存,在随后一个不确定的时间被垃圾收集器回收掉。这个也是java比较占内存的主要原因。

区别

1.存放内容不同

栈内存:用来存放在方法中定义的一些基本数据类型的变量和引用类型的变量。

,