我有以下代碼在我的搜尋器上添加訪問過的鏈接。 提取鏈接後,我有一個循環循環通過每個人href標籤。
當我訪問了一個鏈接後,打開它,我將URL添加到上面定義的訪問鏈接集合變量中。
private final Collection<String> urlForntier = Collections.synchronizedSet(new HashSet<String>());
履帶實現mulithread,如果我訪問過的網址100000,如果我沒有終止履帶就會一天天茁壯成長承擔。它會造成內存問題?請問,我有什麼選擇來刷新變量而不會在線程間產生不一致?
提前致謝!
謝謝Dewfy!我想知道什麼時候變量會被清除,如果我運行了10000年,那麼我需要多少memeory?如何解決這個問題?即使你使用的Trie stacture u建議 – danielad
@danielad來自谷歌的平均URL長度是90個符號,因爲今天Google報告了大約50億(5 * 10^10)個網頁,有些Trie實現聲明我們可以保留這個結構的記憶效率爲O(N)。簡單的乘法運算'90 * 5 * 10^10 = 4.5 * 10^12'(字節)= 4191(Gb)現代計算機 – Dewfy
的數量並不是很大,哇! – danielad