一个对象能够被存储在堆栈上而非堆内存中吗?
我最近看了这篇博客http://www.programmerinterview.com/index.php/data-structures/difference-between-stack-and-heap/
一个对象能够被存储在堆栈上而非堆内存中吗?
是的,一个对象可以被存储在堆栈上。如果你在函数内创建一个对象时没有使用“new”操作符,那么它将会被创建并存储在堆栈上,而不是堆内存中。假设我们有一个名为Member的C++类,我们想要创建一个对象。我们也有一个名为somefunction()的函数。下面是代码示例:
他们建议对象可以存储在堆内存中,这让我感到困惑。
我认为:
所有Java对象都存储在堆内存中。
无论是通过以下方式创建:
a.new关键字
b. 使用Class.forName()
方法
c. 使用clone()
方法
d. 使用newInstance()
方法
e. 使用对象反序列化。方法、线程和变量都在堆栈上。
类变量(静态变量)作为与该类相关的Class对象的一部分存储。这个Class对象只能由JVM创建,并存储在永久代中。
如果我错了,请纠正我。
现在我的疑问是,任何形式的对象是否可以驻留或存储在堆栈上。
谢谢。