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

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

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

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

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

栈内存

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

堆内存

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

区别

1.存放内容不同

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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页