我知道Java是通過引用或按值傳遞的問題正在擊敗死馬,但我確實有關於內存使用情況的問題。在變量之間傳遞大量數據時最大限度地減少內存使用量
我理解Java現在的方式是:
public class MyInt{
int value;
}
MyInt x;
MyInt y;
x = new MyInt(3); // value of x is now 3
y = x; // y now points to same object that x points to
y.setValue(1); // value of said object is now 1
x.getValue(); // should return 1 instead of 3
但我的問題是內存密集型它是如何設置這個新y
?例如:如果明特的數值是一些非常非常大的圖像,而不是一個整數,
x = new MyImage("very large image"); // eats memory depending on size of image
自然會佔用大量的內存有圖像加載如果它是非常大的。我只是想確保當我打電話
y = x; // y now points to same image that x does
y
只是到x
右側已經指向的對象的引用?所以當我撥打y = x
;只要該圖像已經通過初始化x
加載,無論圖像有多大都不會造成內存密集。
這是正確的嗎?我應該避免將同一個非常大的圖像多次加載到內存中的哪些缺陷?
如果您擔心可能多次使用_same_參數調用'new MyImage(「some string」)',並且它會創建同一大圖的多個副本,那麼您可以使用緩存來避免問題。像HashMap這樣的'Map'將是維護這種緩存的一種簡單方法。 – ajb
'這是否正確?' - 是的,y和x只保存大對象的內存地址。內存地址在大多數系統上是一個整數(小)。 –