我只是想了解一下。作为类成员的对象会进入堆中,而局部变量和值类型则进入栈中。是否有使用情况和可能性可以强制将对象推入堆栈?
不,Java不允许直接访问内存。我认为这没有用例。即使在C++中也不可能实现,因为特定的规则适用于对象保存的位置。您需要实现自己的内存管理程序来实现这一点,而这将是繁琐且依赖于平台的。
是和不是 - 我认为这里存在一个概念上的误解。
如果通过将对象强制放在堆中,你的意思是希望它在创建它的方法调用后仍然“存活”,那么是的。你只需要保留对它的引用即可。
如果通过将对象强制放在堆中,你的意思是想指定该对象的内存分配位置,那么不行(除非使用一些jni花哨的东西)。
类成员的对象存储在堆中。
不对。所有对象都存储在堆中。
... 而本地变量和值类型存储在栈中。
不对。所有本地变量都分配在栈上。如果它们是对象的引用,那么如果对象存在,则相关对象存储在堆中。
是否有使用情况和可能将对象强制推入栈或堆?
不需要。所有对象都分配在堆上。