我知道堆栈内存存储基本类型,对象的地址和对象值存储在堆内存中。
但是如果原语是对象的一部分,那么它将存储在堆或堆栈中吗?
我该如何验证?
感谢。
答案 0 :(得分:0)
堆栈仅用于本地基元,引用用于方法(或块内)而不是类的对象。堆用于所有对象数据,包括其原始字段。
答案 1 :(得分:0)
我认为无法知道JVM中的任何数据是在堆栈还是堆上分配的。例如,对于Hotspot,请参阅:http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html#escapeAnalysis
在Hotspot中,您可以关闭Escape Analysis,在这种情况下我认为它将始终在堆上分配,但我不想保证它(这取决于内部工作原理) JVM)。
至于确定堆上是否分配了某些内容,您可以使用jmap进行堆转储,并使用jhat(或其他类似工具)进行分析。然后你应该能够检查堆的内容。