Java 实现SparseMatrix的有效方法

Java 实现SparseMatrix的有效方法,java,algorithm,matrix,out-of-memory,sparse-matrix,Java,Algorithm,Matrix,Out Of Memory,Sparse Matrix,我有一个巨大的矩阵,但是很多条目都是空的 所以我尝试使用一个AVL树的向量,其中向量的长度约为207,每个AVL树约有110000个节点(总共207·110000个节点) 但是现在,当我将问题大小增加到90000时,我得到了一个“超出了GC开销限制”错误,因为节点太多,并且我已经将JVM配置为最大堆大小为2GB 我想知道是否有其他方法可以有效地实现稀疏矩阵 如果有用的话:我不需要在创建稀疏矩阵后修改它。我只需要构建一次,然后进行有效的查找。上有一个关于稀疏矩阵数据结构的很好的总结,但当然这一切都

我有一个巨大的矩阵,但是很多条目都是空的

所以我尝试使用一个AVL树的向量,其中向量的长度约为207,每个AVL树约有110000个节点(总共207·110000个节点)

但是现在,当我将问题大小增加到90000时,我得到了一个“超出了GC开销限制”错误,因为节点太多,并且我已经将JVM配置为最大堆大小为2GB

我想知道是否有其他方法可以有效地实现稀疏矩阵


如果有用的话:我不需要在创建稀疏矩阵后修改它。我只需要构建一次,然后进行有效的查找。

上有一个关于稀疏矩阵数据结构的很好的总结,但当然这一切都取决于您需要对它做什么。如果您只需要查找,我希望哈希表比平衡树更节省空间。尝试java.util.HashMap应该不会花太长时间。

@ruakh我正在使用java,我已经分配了2GB。我不需要修改它,但我只需要高效的查找。2GB堆对于这样的问题来说非常小。为机器添加内存,并将堆大小增加到8GB这样的合理数字,20^7不是与12.8亿相同吗?这将使20^7*110000等于141万亿。