堆和栈的区别

天涯浪子 提交于 2020-02-26 14:36:48

在Java中,栈(Stack)是由编译器自动分配和释放的一块内存区间,主要用与存放一些基本类型的变量(int,float等)、指令代码、常量和对象句柄(对象的引用地址)
栈内存的操作方式类似于数据结构的栈(仅在表尾进行插入和删除的线性表),栈的优势在于,它的存取速度比较快,仅次于寄存器,栈中的数据还可以共享。其缺点表现在,存在栈中的数据大小与生存期必须是确定,缺乏灵活性
堆(heap)是一个程序运行动态分配的内存区域,在Java中,构建对象时所需要的内存从堆中分配。这些对象是通过new“显式”建立的,这种分配方式类似于数据结构中的链表,堆内存在使用完毕后是由垃圾回收器“隐式”回收的
堆的优势在于动态地分配内存的大小,可以按需分配,其生存周期也不必事先告诉编译器,在使用完毕后,Java的垃圾回收收走这些不再使用的内存块。缺点:由于要在运动时才动态分配内存,相比于栈内存,它的存取速度较慢。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!