我正在将java中的文本文件加载到内存中。文本文件的大小为 100 MB,包含数千行 String、Integer 或 Double 类型。
一旦它加载到内存中,如果我使用 64 位 JDK 编译它会占用整个 1 GB 或更多。
这是一个问题,因为我需要加载更大的文件。
它们作为它们的确切数据类型存储在数组列表中。我查看了 MemoryMappedFiles,尽管我不确定它们是否会提供我需要的功能,文本文件是用制表符分隔的,有 40 列我需要在 JTable 中显示,同样我认为如果我不能使用内存映射文件需要显示到 JTable 但也许我错了。
任何建议,将不胜感激。
数据存储如下,我需要将所有数据都存储在内存中的原因是因为在任何时候出于计算目的我都需要访问文件中的任何行。
这是在我的 JTable 表模型中,请注意传递给表模型的行数据在确保内存中没有重复副本之后被清空
private Object[][] data;
public TableModel(ArrayList<String> headers, RowData[] importedData)
{
columnNames = new String[headers.size()];
data = new Object[importedData.length][headers.size()];
for (int i = 0; i < headers.size(); i++) // extract the column names
{ // for the table
this.columnNames[i] = headers.get(i);
}
for (int i = 0; i < importedData.length; i++) // extracting the data
{ // for the table
for (int j = 0; j < headers.size(); j++)
{
this.data[i][j] = importedData[i].myList.get(j);
}
}
}