java 默认栈大小_java – 什么是默认的堆栈大小,它可以增长...

堆栈可以增长多少?

您可以使用名为ss的VM选项来调整最大堆栈大小. VM选项通常使用-X {option}传递.因此,您可以使用java -Xss1M将堆栈大小的最大值设置为1M.

每个线程至少有一个堆栈.一些Java虚拟机(JVM)将Java堆栈(Java方法调用)和本机堆栈(VM中的本机方法调用)放入一个堆栈中,并使用Managed to Native Frame(称为M2NFrame)执行堆栈展开.一些JVM分别保留两个堆栈.在大多数情况下,Xss设置Java Stack的大小.

对于许多JVM,它们在不同平台上为堆栈大小设置了不同的默认值.

我们可以限制这种增长吗?

发生方法调用时,将在该线程的堆栈上创建新的堆栈帧.堆栈将包含局部变量,参数,返回地址等.在java中,您永远不能将对象放在堆栈上,只有对象引用可以存储在堆栈中.由于数组也是java中的对象,因此数组也不存储在堆栈中.因此,如果通过将参数分组为对象来减少本地原始变量,参数的数量,则可以减少堆栈上的空间.实际上,我们不能将对象放在java堆栈上的事实会影响性能一段时间(缓存未命中).

堆栈是否具有某些默认最小值或默认最大值?

正如我之前所说,不同的VM是不同的,并且可能会更改版本.见here.

垃圾收集如何在堆栈上工作?

Java中的垃圾收集是一个热门话题.垃圾收集旨在收集堆中无法访问的对象.所以这需要’可达’的定义.堆栈中的所有内容构成GC中根集引用的一部分.每个线程的每个堆栈都可以访问的所有东西都应该被认为是实时的.还有一些其他根集引用,如Thread对象和一些类对象.

这只是在GC上使用堆栈非常模糊.目前大多数JVM都使用世代GC. This article简要介绍了Java GC.最近我读了a very good article在.net上谈论GC. oracle jvm上的GC非常相似,所以我认为这也可以帮到你.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值