[英]How much memory should I use in my Java program?
我正在制作一個Java程序。 它涉及制作尺寸高達9933 * 14043像素(A0尺寸和300 ppi)的圖像。 圖像為24位,因此占用大約400mb的空間。 BufferedImage類有些如何占用比位圖實際大小更多的RAM,因此圖像將占用大約600 MB的RAM。 使用其他數據時,應用程序在渲染大圖像時最多會占用大約700 mb的RAM。 到目前為止我沒有任何問題。 但是,如果最終用戶沒有足夠的可用內存,則JVM將無法為位圖分配內存並將拋出OutOfMemoryError。
所以我該怎么做?
我想出了一些東西:
我懷疑現在任何人都不到一陣公羊。 因此,您可以檢查用戶是否有足夠的內存與Runtime.getRuntime().maxMemory()
,如果他們不只是顯示錯誤並關閉。 這是一個在出現錯誤時使用JOptionPane
的示例:
long memory = Runtime.getRuntime().maxMemory(); //in bytes
long required = 700 * 1024 * 1024; //700MB, in bytes
if(memory < required) {
JOptionPane.showMessageDialog(null, "You don't have enough memory. (700MB required)", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
maxMemory()
返回JVM將嘗試使用的最大內存量(以字節為單位)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.