2011-04-28 84 views
-1

有時,此代碼打印一個負數,如-64。 該值以KB爲單位。負空閒內存

可能會發生什麼?

 

long memoriaInicial = Runtime.getRuntime().freeMemory()/1024; 
sort(vector); 
System.Out.Println(memoriaInicial - Runtime.getRuntime().freeMemory()/1024); 
 
+0

你認爲「長」型會是一個問題嗎? – Seva 2011-04-28 02:05:15

+0

這是怎麼回事?也許你可以解釋爲什麼你期望獲得積極的結果。 – 2011-04-28 02:05:34

+0

這是一個正常的數學嘿嘿。想象一下,我的程序從50MB空閒內存開始。然後我用10mb。所以50 - 40 = 10mb。 – Seva 2011-04-28 02:09:53

回答

6

這意味着你排序後,垃圾收集器可能已經釋放了更多的內存,你有更多的開始。

+0

hmmm..this後http://stackoverflow.com/questions/2927396/how-can-i-disable-java-garbage-collector說垃圾收集器只在沒有空間時運行,但我的命令是:Xms850M -Xmx850M。我很確定這個方法沒有使用850mb – Seva 2011-04-28 02:08:01

+3

嗯,我對Java的瞭解不多,但在很多方面和.NET很相似,垃圾收集器可以在任意時間運行。儘管如此,我認爲我已經足夠了解Java,並假設你的奇怪結果是垃圾回收的結果。 – Ryan 2011-04-28 02:10:50

+0

我再次閱讀我的所有代碼,我認爲我真的使用了很多內存。這很可能是正確的答案。謝謝minitech。 – Seva 2011-04-28 02:15:15