我想完全理解Java如何使用其內存安排。關於互聯網的討論非常混亂,有時互相矛盾,所以我找不到任何我可以信任的人。如果它與靜態,靜態方法,局部變量,線程,易失性等混合在一起,這件事情會變得非常複雜。所以我在考慮是否有一種方法可以讓我自己學習一些Java編碼實驗。一類MemoryTrack做這樣的事情,在Java中,有沒有一種方法可以跟蹤堆或棧中創建的變量,方法或類?
public myMethod(){
int i = 0;
MemoryTrack.show(new myClass()); //print out "Heap at address 111"
MemoryTrack.show(new myClass()); //print out "Heap at address 222"
MemoryTrack.show(i); //print out "Stack at address 333"
MemoryTrack.show("a static method"); //print out "stack at address 444"
}
爲什麼不把它作爲答案? –
在任何情況下,Java的一部分是你不應該關心堆棧上的內容以及堆棧上的內容 - 實際上,JIT有時會發現堆棧上可能存在的東西通常會繼續存在堆。 –
@Zoltán:完成。 - – ignis