gpt4 book ai didi

memory-management - 分配给线程的栈内存从哪里来?

转载 作者:行者123 更新时间:2023-12-01 13:04:53 25 4
gpt4 key购买 nike

我对 Java GC 和内存管理有一些疑问。

在java中我们通过xmx和xms参数定义进程内存上限和下限。使用这些参数,JVM 分配 young old 和 perm 空间。那么,如果创建了新线程,那么堆栈内存是从哪个内存分配给线程的呢?是来自 perm 空间还是其他空间?

还有类的静态变量分配到young、old还是perm空间的哪个空间? (我猜是烫发?)

XmX 参数是否限制了 young + old gen 或 young + old+ perm gen 或 young + old + perm + stack size ??

谢谢

最佳答案

栈内存基本上来自栈区,与堆区和perm无关区域。

静态变量分配在堆中,字符串和数字常量除外。

-Xmx 参数只限制堆的新旧部分,因为永久区域不是它的一部分。

堆栈区域大小由-Xss 标志设置,堆区域大小由-Xmx 标志设置,perm 区域大小由-XX:MaxPermSize 设置

如果您想深入研究 JVM 内部内存管理,我推荐这个 blog entry .

关于memory-management - 分配给线程的栈内存从哪里来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com