当前位置:  技术问答>java相关

堆和堆栈有什么不同?

    来源: 互联网  发布时间:2015-06-02

    本文导语:  堆和堆栈有什么不同? | **堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内...

堆和堆栈有什么不同?

|
**堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里——特别是对象句柄,但Java对象并不放到其中。
**堆。一种常规用途的内存池(也在RAM区域),其中保存了Java对象。和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!

|
堆一般存放动态的数据,栈一般是局部数据,在内存中栈使用是先进后出的原则。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 每个线程有自己私有的堆栈,其实这些堆栈的资源是操作系统分配给进程的,这种说法对吗?
  • C++ Stacks(堆栈) 成员 empty():堆栈为空则返回真
  • 堆栈问题,若你是高手请留下见解。。。
  • C++ Stacks(堆栈) 成员 pop():移除栈顶元素
  • cpu是怎么找到中断程序的堆栈的?
  • C++ Stacks(堆栈) 成员 top():返回栈顶元素
  • redhat下改变某个进程中使用的堆栈大小
  • C++ Stacks(堆栈) 成员 size():返回栈中元素数目
  • 请高手给讲解一下堆栈、堆、静态存储等概念
  • C++ Stacks(堆栈) 成员 push():在栈顶增加元素
  • modprobes可不可以打出堆栈信息?
  • python异常信息堆栈输出到日志文件
  • 关于linux下多线程的堆栈问题
  • C++程序的内存不同的数据段及堆栈布局
  • linux下,进程的堆栈大小到底是OS决定的还是编译器决定的?
  • windows堆栈溢出利用的七种方式
  • 到底什么是堆栈?
  • 什么是堆栈?
  • 512字节的数组,是放在堆栈上好还是放在堆上好??
  • 堆栈段仅仅是指的栈?和堆有关系么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3