zoukankan      html  css  js  c++  java
  • heap与stack的区别

    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(); 则在堆内存中分配空间

  • 相关阅读:
    后缀自动机学习小记
    [bzoj4524] [loj#2047] [Cqoi2016] 伪光滑数
    [bzoj4825] [loj#2018] [Hnoi2017] 单旋
    [bzoj4571] [loj#2016] [Scoi2016] 美味
    [bzoj4569] [loj#2014] [Scoi2016] 萌萌哒
    [bzoj4568] [loj#2013] [Scoi2016] 幸运数字
    [bzoj4567] [loj#2012] [SCOI2016] 背单词
    deque双向队列
    STL_vector
    qsort与sort()
  • 原文地址:https://www.cnblogs.com/itxiongwei/p/10832872.html
Copyright © 2011-2022 走看看