我正在编写一个 Web 应用程序,其 Java 后端在 Tomcat 服务器和 JavaScript 客户端上运行。
在后端,我必须处理一个大的 int[][][] 数组,其中包含 CT 扫描的信息。尺寸约为。 1024x1024x200。
我只想在需要处理图像切片等新数据时才将此数组加载到内存中,并将剩余时间存储在某种数据库中。
到目前为止我尝试过的事情:
使用JDBM3存储字符串,int[][][] Hashmap,遇到内存不足错误
序列化对象并使用 bytea[] 数据类型将其保存到 PostgreSQL-DB 中,存储正确,但再次加载时出现内存错误。
所以我的第一个问题是,如何保存这么大的数组(哪个数据库,方法)?它应该加载速度快,并且应该有某种多用户访问安全性,因为多个用户将能够使用前端,因此将 int[][][] 加载到后端。该数据库应具有非商业许可证,例如。 GPL、麻省理工学院、 Apache ...
第二个问题,我知道我可以将序列化的数组保存在文件系统中并将链接保留在数据库中,但是对于多个用户来说访问安全吗?
最佳答案
如果客户端计算机上有足够的 RAM,则可以从简单地增加 JVM 堆的大小开始。这样,您应该能够创建更大的数组,而不会遇到“内存不足”错误。
仅阵列就需要至少大约 800 Mb 的空间(1024 x 1024 x 200 x 32 位)。
关于java - 如何存储大型Java对象/多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805523/