首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
(Java部分)Java 中堆和栈有什么区别?
[不定项选择题]
(Java部分)Java 中堆和栈有什么区别?
堆是整个JVM共享的
栈是每个线程独有的
栈是整个JVM共享的
对象可以分配在堆上也可以分配在栈上
查看正确选项
添加笔记
求解答(3)
邀请回答
收藏(30)
分享
纠错
1个回答
添加回答
1
mynameLSD
1java 的栈内存。它的真正名称叫做:java虚拟机栈。它和java堆内存的有一个很大的区别在于,它是线程私有的。它的生命周期也和线程的生命周期捆绑在一起。 每个java方法在执行的时候都会创建一个栈帧用来存储局部变量表,操作数栈,动态链接,方法出口等信息。每一个方法从调用直至完成执行后的过程,就对应着一个栈帧在虚拟机栈中的入栈到出栈的过程。在java虚拟机栈中,局部变量表所需要的内存空间在编译期间完成分配的。也就是说在进入一个方法时,这个方法在帧中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小。那如果这个方法的线程所需要的内存大于这个空间呢?结果是会抛出OutOfMemoryError异常。另外如果线程请求的栈深度大于虚拟机所设的深度,将抛出 StackOverflowError异常。
2同个java程序内的多线程运行在同个JVM实例上,多个线程之间共享堆内存(多线访问堆时,要实现数据的同步)。
发表于 2018-01-15 10:20:04
回复(4)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
来自:
唯品会2018校招实时...
上传者:
小小
难度:
1条回答
30收藏
3014浏览
热门推荐
相关试题
(Java部分)下面关于Atomi...
评论
(0)
来自
唯品会2018校招实时开...
(C++部分)下列关于对象初始化的...
C++
评论
(13)
来自
唯品会2018校招实时开...
执行以下程序,理论上输出的结果应最...
360集团
Python
算法工程师
2019
评论
(1)
来自
360公司-2019校招...
以下描述正确的是
Java
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题