我想測試一下我寫的Java程序,以證明它的效率。我有很多不同的測試可以運行,並且我試圖在運行時分析中做到精確。問題是不同的測試可能會訪問常見的磁盤上的信息。所以,爲了在我的實驗結果中「公平」,我想以某種方式通過程序清除我的Java程序使用的內部內存,在實驗之間。換句話說,我希望每個實驗都有相同的「空白內存/緩存」。java清除內部內存緩存
我試着在兩個實驗之間的大文件中讀取數據。我也嘗試重新啓動我的機器。有趣的是,當我讀入一個大文件時,當我重啓機器時(比如說40秒到5秒),時間會變得更糟。除了在每次實驗之間重新啓動我的機器之外,清除內部存儲器的正確方法是什麼(即,避免通過普通磁盤訪問進行人工加速實驗),這是不可行的?
但是,爲什麼你認爲一個空的磁盤緩存是一個現實的場景?你只是在測試非常罕見的最壞情況。 –
謝謝。我同意我正在測試最糟糕的情況,而且在實踐中,情況會更好。但是,我仍然想表明,即使在最糟糕的情況下,我的程序運行良好。 (我不想讓我寫的關於我的系統的論文的裁判有抱怨緩存問題。) – user1797753
這裏沒有Java API,但可能有操作系統特定的方式來執行此操作。那麼您使用哪種操作系統? – nos