在Java里堆内存和栈内存有什么区别?
1个回答
展开全部
这个来自于古老的C语言概念,凡是在函数中用基本数据类型(string除外)申请的局部变量,也就是函数退出则这些变量就消亡的变量,包括函数自己的参数定义,都用栈内存的方式构造内存,这样做的目的是进入该函数、变量值进栈,函数退出自动退栈,这样就自动完成了内存申请和回收,这些栈空间的变量只能被该函数自己引用,其他函数不能引用。
而C语言的全局变量、JAVA的对象,也就是说如C语言用malloc()函数,C++、JAVA等用new构造的对象,都在堆方式组织的内存中,这样的目的是让很多函数都能引用到这些存储空间的值或者对象。存储在堆空间的对象和数据,需要编程者按需要释放,如C语言用free(),C++则要析构函数,Java就有自动回收机制。
随手写的,有错勿喷。
而C语言的全局变量、JAVA的对象,也就是说如C语言用malloc()函数,C++、JAVA等用new构造的对象,都在堆方式组织的内存中,这样的目的是让很多函数都能引用到这些存储空间的值或者对象。存储在堆空间的对象和数据,需要编程者按需要释放,如C语言用free(),C++则要析构函数,Java就有自动回收机制。
随手写的,有错勿喷。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询