Java垃圾收集器的性能我有一個程序,其中有問題的循環看起來像這樣分配/釋放內存內循環
int numOfWords = 1000;
int avgSizeOfWord = 20;
while(all documents are not read) {
char[][] wordsInDoc = new char[numOfWords][avgSizeOfWord];
for(int i=0; i<numWordsInDoc; i++) {
wordsInDoc[i] = getNextWord();
}
processWords(wordsInDoc);
}
我想知道,當這個循環被執行了什麼幕後發生。垃圾收集器何時收集爲每個文檔分配的內存?他們是一個更好的方式(內存使用)做同樣的事情嗎?
任何洞察力是讚賞。
看看:http://stackoverflow.com/questions/4138200/garbage-collection-on-a-local-variable – 2011-05-24 18:27:12
Java有一個非確定性的垃圾收集器,這意味着沒有辦法預測它的行爲只是通過查看一段代碼。 – 2011-05-24 18:27:15
你的問題可以說比JIT更適合JIT,也就是說如果這個代碼被JIT編譯,那麼你的代碼的版本是什麼樣的?例如processWords有什麼作用?它會被內聯嗎?如果是這樣,wordsInDoc會在循環外部懸掛嗎?無論如何,它有可能被吊起來嗎?並可能還有其他一些可能的編譯途徑...... – Matt 2011-05-24 19:10:56