gpt4 book ai didi

放置在堆栈或堆上的 Java 变量

转载 作者:IT老高 更新时间:2023-10-28 20:29:37 27 4
gpt4 key购买 nike

我对 Java 没有太多了解。

我浏览了几个链接,发现博客说“Java Primitives stored on stack”,我觉得这取决于实例变量或局部变量。

在浏览了几个链接后,我的结论是,


类变量 - 原语 - 作为它所包含的 Object 的一部分存储在堆中。

类变量——对象(用户定义)——作为它包含的对象的一部分存储在堆上。对于引用对象和实际对象都是如此。

方法变量 - 基元 - 作为堆栈帧的一部分存储在堆栈中。

方法变量——对象(用户定义)——存储在堆上,但对堆上该区域的引用作为该堆栈帧的一部分存储在堆栈上。如果 Object 中包含另一个对象,引用也可以存储在堆中。

静态方法(实际上是所有方法)以及静态变量都存储在堆中。

如果我的理解有误,请纠正我。谢谢。

最佳答案

在 JVM 中有一些优化,甚至可以使用 Stack for Objects,这减少了垃圾收集的工作量。

类存储在堆的特殊部分,但这取决于您使用的 JVM。 (热点中的 Permgen f.e. <= 24)。

一般而言,您不必考虑数据的存储位置,而应更多地考虑语义,例如可见性和数据的生命周期。到目前为止,您在问题中的解释看起来不错。

关于放置在堆栈或堆上的 Java 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19402207/

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