zoukankan      html  css  js  c++  java
  • Heap和Stack的区别

    我的答案:

    1.栈是用来存放基本类型的变量和引用类型的变量,堆用来存放new出来的对象和数组。

    2.栈的存取速度快,但不灵活。堆的存取速度慢,但是存取灵活,空间动态分配。

    3.栈在建立在连续的物理位置上,而堆只需要逻辑位置连续即可。

    4.堆是JVM运行时最大的内存区域。

    巨佬的答案:

    Java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

    堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。

    1.heap是堆,stack是栈。

    2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配

    3.stack空间有限,heap的空间是很大的自由区。

    在Java中,

    若只是声明一个对象,则先在栈内存中为其分配地址空间,

    若再new一下,实例化它,则在堆内存中为其分配地址。

    4.举例:

    数据类型 变量名;这样定义的东西在栈区。

    如:Object a =null; 只在栈内存中分配空间

    new 数据类型();或者malloc(长度); 这样定义的东西就在堆区

    如:Object b =new Object(); 则在堆内存中分配空间

    参考资料:http://www.cnblogs.com/perfy/archive/2012/09/06/2672946.html

  • 相关阅读:
    关闭Windows的CTRL+ALT+DEL 和 ALT+TAB组合键的方法
    VC中常用文件操作(一)
    VC 创建NT服务程序
    几个操作文件的API函数
    VC中常用文件操作(二) ——INI文件操作
    初学OpenCV之图像坐标读取函数cvGet2D()
    OpenCV学习之图像读取与显示
    SLT容器之vector简单实现C++运行时多态
    C/C++文件——数据写入、读取
    OpenCV学习之视频读取与帧的提取、显示及保存
  • 原文地址:https://www.cnblogs.com/2sheep2simple/p/10680347.html
Copyright © 2011-2022 走看看