Java中栈内存和堆内存怎么理解?

Java中栈内存和堆内存怎么理解?

Object obj = new Object();
以上这句话,会把obj这个引用放进栈内存,再说白一点,就是这个对象的名字obj放进栈内存,栈内存运行速度较快,用于查找索引(也就是名字)

而new Object()会在堆内存中开辟一块空间给这个对象,对象几乎所有的属性啊,方法啊,全都在里面了,也就是对象的实体都在堆内存中 ,堆内存速度慢但是成本低,空间较大,用以存放程序
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-20
首先 你要搞清楚 堆和栈 是虚拟出来的概念 他们在内存中都只是一块区域,只是他们的存取规则被人为的限制了,一般来说 把类似指针的地址数据放在同一块内存区域这块区域遵守栈的存取规则我们就称之为栈 然后把主要的数据放在同一块内存区域并遵守堆的存取规则 我们称之为堆 其实他们物理上都是一样的东西 只是我们附加上了一些概念 最后之所以这么做 是为了优化存取速度
第2个回答  2011-11-20
我说的比较通俗点吧,栈内存用来保存变量名,堆内存用来保存New出来的对象~这样理解不?

堆内存和栈内存区别
栈内存是存取速度比堆要快,仅次于寄存器,栈数据可以共享。3、范围不同堆内存中分配的内存需要程序员手动释放,如果不释放,而系统内存管理器又不自动回收这些堆内存的话动态分配堆内存,那就一直被占用。栈内存中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间...

谁能解释一下java中的栈内存和堆内存
从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.而这种不同又主要是由于堆和栈的特点决定的:在编程中,例如C\/C++中,所有的方法调用都是通过栈来进行的,所有的局部变量,形式参数都是从栈中分配内存空间的。实际上也不是什么分配,只是从栈顶向上用就行,就好像工厂...

请简单通俗易懂的解释一下在Java中什么叫堆 什么叫栈 谢谢
在java中的栈:栈的原理明白了,其实只要是计算机只要是编程语言,什么堆什么栈都是一样的,基本作用也一样。java中可以认为,栈用来存放局部变量的。public void fun(){ int i=0; \/\/i 是一个局部变量,存放在栈里面的 Object obj = new Objec(); \/\/obj 是一个对象应用,同样也是一个局部变量...

java怎样理解“堆空间”和“栈空间”
1、堆空间 就是用来存储对象的栈空间是用来存储一些变量的 用完后会通过垃圾收集器自动清楚引用对象通过类似指针的方法来指2、程序从硬盘载入的内存-有四个内存区供程序使用heap(堆 ),stack(栈),data segment,code segmentheap堆:用来存放new出来的东西stack栈:局部变量。data segment:静态变量,...

什么是栈和堆
栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。 堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会...

JVM的内存结构里的那个堆和栈,和数据结构里的堆和栈是一个东西吗?
堆和栈的区别(内存和数据结构)在计算机领域,堆栈是一个不容忽视的概念,编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为曾经就是这么想的和汇编语言中的堆栈一词混为一谈。

java中堆和栈的区别主要在于
第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面...

java堆栈是什么意思?
简单的说:Java把内存划分成两种:一种是栈内存,一种是堆内存。\\x0d\\x0a \\x0d\\x0a在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存...

内存——栈?堆?这些都是什么啊!
首先,堆,或称为自由存储区,是程序用于动态内存分配的地方。当创建对象时,虽然对象本身在堆上创建,但其引用信息存储在栈内存中。使用C++的new关键字分配的内存就在堆中。分配的内存地址通常由new操作符返回,通过指针存储。堆内存分配相对自由,但不安全,数据对所有线程可见,处理不当可能导致内存泄漏...

堆空间和栈空间的区别
1. 分配方式:堆空间是由程序员手动分配和管理的,而栈空间则是由编译器自动分配和管理的。2. 使用方式:堆空间通常用于存储动态分配的对象,可以在程序运行期间动态地分配和释放内存。栈空间通常用于存储局部变量和函数调用时的参数、返回值等数据,是一种先进后出的数据结构。3. 生命周期:堆空间中的...

相似回答