簡體   English   中英

java清除內部內存緩存

[英]java clearing internal memory cache

我正在嘗試測試我編寫的Java程序,以證明其效率。 我有許多不同的測試要運行,我想在運行時分析中做到精確。 問題是不同的測試可能會訪問磁盤上常見的信息。 因此,為了在我的實驗結果中“公平”,我想以某種方式以編程方式清除我的Java程序在實驗之間使用的內部存儲器。 換句話說,我希望每個實驗都具有相同的“空內存/緩存”。

我嘗試在實驗之間閱讀大文件。 我也試過重啟我的機器。 有趣的是,當我在一個大文件中讀取時,然后當我只是重新啟動機器時(例如40秒到5秒),時間會更加糟糕。 清除內部存儲器的正確方法是什么(即,避免從普通磁盤訪問實驗的人為加速),而不是在每次實驗之間重新啟動我的機器,這是不可行的?

清除內存的正確方法是什么

重新啟動計算機。 正如你所說,這可能不是最慢的選擇。

計算機被設計為盡可能高效,使它們故意低效意味着做出一些關於你想要它的低效率的假設,所以沒有標准的方法來做到這一點。

清除已寫入文件的緩存的一種方法是刪除它們。 如果要清除要保留的磁盤中的文件緩存,可以編寫大量文件,大於主內存並刪除它們。

如果您使用的是Windows,則在任何情況下都不會使用所有內存來緩存文件。 你可以做的是在一個時間和地點寫出幾百MB的大文件。 當緩存耗盡時,您會看到Java的時間突然跳躍,您知道此時您可能已經清除了緩存。 發生這種情況后,刪除它們,結果您的緩存可能為空。

這可以幫助您獲得可重現的結果,但這可能與重新啟動不完全相同。 注意:除非您希望每次運行應用程序時重新啟動計算機,否則重啟后所花費的時間可能無意義。

順便說一句:磁盤緩存你應該擔心操作系統中的問題。 除了在您創建的緩沖區和您編寫的代碼中,Java不會緩存文件,因此這些應該在您的控制之下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM