您需要了解一些较低级别的Java内存组织。在堆栈上,存储了指向堆的基元(int,double,boolean等)和对象引用。
在任何对象内部都是如此。它或者直接包含对其他对象或基元的引用。对象始终在任何上下文中引用,并且这些引用按值传递。
所以我们可能有:
[ STACK ] [ HEAP ]
int a: 10; -> MyWrapperObject@21f03b70====||
double b: 10.4; | || int someField: 11 ||
MyWrapperObject@21f03b70 ------| || String@10112222 ----------
...... ||==========================|| |
|
|
String@10112222============||
|| ... ||
|| ... ||
}}=========================||请注意,在某些情况下(如通过JVM内部)对象可能会存储在非堆内存中。