使用Properties类加载地图

我有一个包含75000个条目的地图,每个条目的平均大小为10kb。

我使用Properties类将此映射加载到内存中。 但是由于地图的大小,当主机上的RAM很小时,我得到OutOfMemoryException。

我有一个选择是批量读取条目(如10,000)到内存而不是加载完整的地图。 处理完最初的10k后,读取下一个10k。

有没有办法使用Properties类完成此操作。

另外,有没有更好的方法以这种方式加载地图条目?

感谢致敬,
Sujith

不要使用属性 ,这是遗留的

  1. 将条目分成多个文件

  2. 按顺序读取每个文件,使用“首选项”加载和处理

示例代码:

package com.mypack.test; import java.io.*; import java.util.*; import java.util.prefs.Preferences; public class PreferencesExample { public static void main(String args[]) throws FileNotFoundException { Preferences ps = Preferences.userNodeForPackage(PreferencesExample.class); // Load file object File fileObj = new File("d:\\data.xml"); try { FileInputStream fis = new FileInputStream(fileObj); ps.importPreferences(fis); System.out.println("Prefereces:"+ps); System.out.println("Get property1:"+ps.getInt("property1",10)); } catch (Exception err) { err.printStackTrace(); } } } 

示例xml:

                    

我假设您不需要同时加载所有属性,但您需要遍历所有属性。 就个人而言,我会逐行手动解析文件并以类似流的方式工作。 如果有一个用于处理非常大的属性的lib我不知道。