首页
题库
面试
求职
学习
竞赛
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收藏
3288浏览
热门推荐
相关试题
(Java部分)关于异常处理,下面...
评论
(0)
来自
唯品会2018校招实时开...
(Java部分)下面关于代码的哪个...
评论
(0)
来自
唯品会2018校招实时开...
(Java部分)在Java中,每个...
评论
(2)
来自
唯品会2018校招实时开...
电路如图所示,RL为负载电阻, 则...
模拟电路
评论
(1)
下面选项中,哪些 Go 程序代码不...
Go
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题