1
我在scala中編寫代碼,我有幾個方法返回非常大的數組(大小約70000)。我跑的形式的東西:舊堆堆空間不被垃圾收集在斯卡拉
object x {
def returnArray(y: Int): Array[Double] = {
... \\returns a large array
}
def calculateAverage(largeArray: Array[Double]) : Double = {
...\\ takes the large array and calculates the average number.
}
}
我運行JConsole的伊甸園和生存空間往往不GCing太正在使用的內存時被發現。然而,舊的gen空間的GC沒有做任何事情,並且使用了大量的內存。
難道這是由於非常大的數組直接進入舊的Gen空間,然後因爲數組是返回類型的方法,他們不被解除引用?
70K元素將在MB周圍,即使是便宜的手機也適用,所以不是「非常大」。你的意思是7億個元素,其中幾個GB?順便說一句VisualVM或飛行記錄器可能會更好。 –
jconsole和VisualVM創建相當多的垃圾只是監視你的應用程序,這將使它很難看出差異。順便說一句,你確定收集完整的收藏? –
@PeterLawrey'Array [Double]'是java中的double []' – Odomontois