[英]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.