在java中处理巨大的浮点矩阵

在java中处理巨大的浮点矩阵,java,matrix,heap-memory,primitive,Java,Matrix,Heap Memory,Primitive,我目前正在从事一个JAVA项目,我需要为全对最短路径算法的结果创建浮点矩阵。我有很多堆内存问题,我的一些图可能有超过700k个顶点。 我正在寻找一种限制内存使用的方法,这样我就可以处理一些最大的图形 我一直在搜索并找到这篇文章: 我很快实现了它,但是磁盘上没有足够的空间放一些图,我得到了一个java.io.IOException 对我能做什么有什么建议吗 提前多谢 *编辑:性能不是问题,如果我需要让应用程序打开几个小时进行计算,这总比根本不进行计算要好如果你必须处理700k x 700k密集矩阵

我目前正在从事一个JAVA项目,我需要为全对最短路径算法的结果创建浮点矩阵。我有很多堆内存问题,我的一些图可能有超过700k个顶点。 我正在寻找一种限制内存使用的方法,这样我就可以处理一些最大的图形

我一直在搜索并找到这篇文章:

我很快实现了它,但是磁盘上没有足够的空间放一些图,我得到了一个java.io.IOException

对我能做什么有什么建议吗

提前多谢


*编辑:性能不是问题,如果我需要让应用程序打开几个小时进行计算,这总比根本不进行计算要好

如果你必须处理700k x 700k密集矩阵,那么你就有一个深层次的架构问题。您所说的49000000000
浮点值
——这将需要大约2TB的存储空间。你可以考虑增加一个巨大的附加磁盘来适应这些(一次只不过是一个小数目),但是你很可能会发现性能很糟糕。这个问题似乎是在寻找集群上的分布,或者可能是一个巨大的共享内存机器。如果每个顶点大约是48字节,那么它们只需要消耗35MB。如果你有记忆问题,不太可能是这样。我建议您使用内存探查器查看内存使用情况。感谢您的快速响应。John,我是实习生,没有任何硬件升级,这就是我寻找植入解决方案的原因。彼得,我的记忆问题只有在我试图计算最短路径矩阵时才会出现,我对顶点没有任何问题。如果你说的是内存映射文件,我以前从未遇到过这种类型的对象,因此可能会出现一两个错误,我将查看itA磁盘存储的
(matrixname,i,j,value)
,使用get/set,由前三个字段索引。你可以从一个数据库开始。如果你必须处理700k x 700k密集矩阵,那么你就有一个深层次的架构问题。您所说的49000000000
浮点值
——这将需要大约2TB的存储空间。你可以考虑增加一个巨大的附加磁盘来适应这些(一次只不过是一个小数目),但是你很可能会发现性能很糟糕。这个问题似乎是在寻找集群上的分布,或者可能是一个巨大的共享内存机器。如果每个顶点大约是48字节,那么它们只需要消耗35MB。如果你有记忆问题,不太可能是这样。我建议您使用内存探查器查看内存使用情况。感谢您的快速响应。John,我是实习生,没有任何硬件升级,这就是我寻找植入解决方案的原因。彼得,我的记忆问题只有在我试图计算最短路径矩阵时才会出现,我对顶点没有任何问题。如果你说的是内存映射文件,我以前从未遇到过这种类型的对象,因此可能会出现一两个错误,我将查看itA磁盘存储的
(matrixname,i,j,value)
,使用get/set,由前三个字段索引。你可以从数据库开始。