问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 栈和堆 的区别

发布网友 发布时间:2022-03-01 00:44

我来回答

3个回答

懂视网 时间:2022-03-01 05:05

1、功能不一样

栈内存用来存储局部变量和方法调用;堆内存用来存储Java中的对象。

2、异常错误展现方式不一样

如果栈内存没有可用的空间存储方法调用和局部变量,JVM会抛出java.lang.StackOverFlowError;如果堆内存没有可用的空间存储生成的对象,JVM会抛出java.lang.OutOfMemoryError。

3、空间大小不一样

栈的内存要小于堆内存,使用递归栈很快就会充满,递归没有及时跳出可能发生StackOverFlowError问题。

总结:

java中堆和栈在功能、异常错误展现方式、空间大小等方面不一样。

热心网友 时间:2022-03-01 02:13

 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.

  静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求.

  栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个程序模块时,必须知道该程序模块所需的数据区大小才能够为其分配内存.和我们在数据结构所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。

热心网友 时间:2022-03-01 03:31

java堆和栈的区别Java中内存分成两种:一种是栈stack,一种是堆heap。函数中的一些基本类型的变量(int,float)和对象的引用变量(reference)都在函数的栈中,马克-to-win,(工作于编译阶段,生成class文件之前)分配。存取速度快,稍逊于寄存器,比堆快,函数执行完后,Java会自动释放掉为函数里变量开辟的栈内存空间,该内存空间可以立即被另作他用。堆heap内存用来存放由new创建的对象和数组。堆内存,负责运行时(runtime,执行生成的class文件时)数据,由JVM的自动管理。缺点是,存取速度较慢。栈中的引用变量指向堆中的对象或数组。栈中有共享池的概念,比如下面例子中,sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将"hello"存放进栈,并令sz指向”hello”,如果已经有”hello”则直接令sz指向“hello”。对于int,float类型的变量也是一样的有这种共享池的概念,注意上述的工作是在compile(编译)的阶段完成的,而不是runtime运行时完成的。对于下面程序中:ss0=newString("hello");是用new()来新建对象的,存于堆中。每调用一次就会创建一个新的对象。当然从节省空间的角度来讲,肯定不如str="hello",有童鞋一定问,那要它有什么用?当时设计编译器时,为什么要设计它?马克-to-win,那我请问你,如果在你编程序时,你还不知道字符串内容怎么?这时就用到newString,所以,什么都有什么的用处。publicclassTest{publicstaticvoidmain(Stringargs[]){Stringstr,str1,ss0,ss1,ss2,ss3,ss4;str="hello";。。。。。。。。。。。。。。。。详情网上找“马克-to-win”,参考他的网站或他的百度空间:java第2章的内容
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是真的黑米还是假的? 牡丹江市区好玩的地方 显卡问题,现在的显卡显存一般都为多少? 现在主流显存是多少?512M5年后会过时吗 主流家用电脑配置家用电脑买什么样配置比较好 现在的电脑显存一般是多少? 安顺万家领秀城怎么样?好不好?值不值得买? 请问下面一道题怎么加标点 花园里 牡丹 月季 玫瑰 芍药 开得美丽极了... 是什么把大地打扮的这么漂亮呢 是雪呀 这两句话怎么写标点符号? 通州有那些私立高中啊 java栈和堆的区别是什么 苹果手机怎么安装两个 就现在来看,思科认证和华为认证哪个含金量更高? RHCA在上海哪里可以考? java序列化的好处? 是不是什么类的对象都可以被序列化? 另外序列化和反序列化都需要自己实现吗>? java中,可序列化serializable的作用是什么。 java编程:请问序列化有什么好处? php是自学好还是培训好,学什么程度可以找工作 一九一几年到一九一几年中国发生过疫情? 考网络规划师需要具备哪些知识 系统集成项目经理的证书如何考,需要什么资质,需要哪些条件? 系统集成项目管理工程师的考试资格? 考系统集成项目管理工程师需要什么条件? 教师中级职称评定要求是什么? photoshop怎么把图片变清晰一点? 软件设计方案都包括哪些内容啊 软件设计应该包含哪些要素 红米手机如何把手机存储的应用搬到sd卡上 苹果12pro耗电快怎么办? 如何解决苹果手机电池不耐用 java堆和栈的区别 JAVA中的栈和堆有什么异同点 在Java里堆内存和栈内存有什么区别? 现在学习华为认证好还是学习思科认证好,哪个更有前途,哪家培训教的好? 网络规划设计师的未来 如何关闭windows自动更新 win7关闭windows自动更新 每年的数据库系统工程师和网络工程师都只有一次考吗?我只知道是5月份有一次 2016年数据库系统工程师考试报名时间是什么时候? 常州有什么好吃的特产 泰州有哪些值得带回来的好吃的特产? 江苏泰州有什么特产? 泰州有哪些特产、小吃 泰州有什么好吃的? 泰州特产有哪些好吃的 泰州什么特产? 泰州特产是什么 【思科认证】是权威的吗?是关于计算机哪方面的(网络还是其他)?都分为哪些级别和项目? 计算机网络等级有几种? 苹果手机怎么恢复手机卡里面的联系人?