使用Properties类加载地图
我有一个包含75000个条目的地图,每个条目的平均大小为10kb。
我使用Properties类将此映射加载到内存中。 但是由于地图的大小,当主机上的RAM很小时,我得到OutOfMemoryException。
我有一个选择是批量读取条目(如10,000)到内存而不是加载完整的地图。 处理完最初的10k后,读取下一个10k。
有没有办法使用Properties类完成此操作。
另外,有没有更好的方法以这种方式加载地图条目?
感谢致敬,
Sujith
不要使用属性 ,这是遗留的
-
将条目分成多个文件
-
按顺序读取每个文件,使用“首选项”加载和处理
示例代码:
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我不知道。