【发布时间】:2023-03-30 00:15:01
【问题描述】:
我正在使用 Java (Eclipse) 构建一个处理照片的应用程序。
所以我使用此链接Java get available memory 来了解我还有多少可用内存。问题是我有这个代码:
Main.printMemory("before image");
url = new File(information.getPath()).toURI().toURL();
image = ImageIO.read(url);
Main.printMemory("after image");
结果是:
消息:图像前
可用内存(字节):82554768
最大内存(字节):129957888
总内存(字节): 85000192
和
消息:图像后
可用内存(字节):42600680
最大值 内存(字节):129957888
总内存(字节):85000192
所以加载该图像需要82554768 - 42600680 = 39954088 bytes = 38 MB
照片大小为 3.3 MB
占用这么多内存正常吗???为什么会消耗这么多内存?有什么办法可以减少这种情况,希望能保持照片质量?
【问题讨论】:
-
图片有多大,以像素为单位?
-
4000 × 3000及其JPEG图像
-
4000 x 3000 x 3 字节/像素 = 36000000 字节。 (图像不会压缩存储在内存中)
-
我刚刚加载了 5 张照片,大约 2-4MB 和可用内存
-
振荡 82554872 到 42839376 到 31523760 到 54946760 到 43621704 到 6062136 到 18054976
标签: java image memory memory-management