有時,此代碼打印一個負數,如-64。 該值以KB爲單位。負空閒內存
可能會發生什麼?
long memoriaInicial = Runtime.getRuntime().freeMemory()/1024;
sort(vector);
System.Out.Println(memoriaInicial - Runtime.getRuntime().freeMemory()/1024);
有時,此代碼打印一個負數,如-64。 該值以KB爲單位。負空閒內存
可能會發生什麼?
long memoriaInicial = Runtime.getRuntime().freeMemory()/1024;
sort(vector);
System.Out.Println(memoriaInicial - Runtime.getRuntime().freeMemory()/1024);
這意味着你排序後,垃圾收集器可能已經釋放了更多的內存,你有更多的開始。
hmmm..this後http://stackoverflow.com/questions/2927396/how-can-i-disable-java-garbage-collector說垃圾收集器只在沒有空間時運行,但我的命令是:Xms850M -Xmx850M。我很確定這個方法沒有使用850mb – Seva 2011-04-28 02:08:01
嗯,我對Java的瞭解不多,但在很多方面和.NET很相似,垃圾收集器可以在任意時間運行。儘管如此,我認爲我已經足夠了解Java,並假設你的奇怪結果是垃圾回收的結果。 – Ryan 2011-04-28 02:10:50
我再次閱讀我的所有代碼,我認爲我真的使用了很多內存。這很可能是正確的答案。謝謝minitech。 – Seva 2011-04-28 02:15:15
你認爲「長」型會是一個問題嗎? – Seva 2011-04-28 02:05:15
這是怎麼回事?也許你可以解釋爲什麼你期望獲得積極的結果。 – 2011-04-28 02:05:34
這是一個正常的數學嘿嘿。想象一下,我的程序從50MB空閒內存開始。然後我用10mb。所以50 - 40 = 10mb。 – Seva 2011-04-28 02:09:53