java - تحميل الخريطة باستخدام فئة الخصائص




optimization properties (2)

لدي خريطة بها 75000 إدخال وستكون قيمة كل إدخال 10 كيلو بايت في المتوسط.

أنا تحميل هذه الخريطة في الذاكرة باستخدام فئة الخصائص. ولكن نظرًا لحجم الخريطة ، فإنني أحصل على OutOfMemoryException عندما تكون ذاكرة الوصول العشوائي على المضيف صغيرة.

أحد الخيارات المتاحة لي هو قراءة الإدخالات على دفعات (مثل 10،000) في الذاكرة بدلاً من تحميل الخريطة الكاملة. اقرأ 10k التالية بعد معالجة 10k الأولي.

هل هناك أي طريقة لإنجاز هذا باستخدام خصائص الصف.

أيضًا ، هل هناك طريقة أفضل لتحميل إدخالات الخريطة بهذه الطريقة؟

شكرا مع تحياتي،
سوجيث


أفترض أنك لست بحاجة إلى تحميل جميع الخصائص في نفس الوقت ، ولكنك تحتاج إلى تكرار كل الخصائص. شخصيا ، أود أن أذهب مع تحليل خط الملف يدويا بخط يدوي والعمل بطريقة تشبه الدفق. إذا كان هناك ليب لمعالجة خاصية كبيرة جدا لا أعرف ذلك.


لا تستخدم Properties ، والتي تعتبر قديمة

  1. قسّم الإدخالات إلى ملفات متعددة

  2. اقرأ كل ملف بالتسلسل ، وقم بالتحميل Preferences باستخدام Preferences

رمز المثال:

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:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preferences SYSTEM 'http://java.sun.com/dtd/preferences.dtd'>
<preferences EXTERNAL_XML_VERSION="1.0">
<root type="user">
<map />
<node name="com">
  <map />
  <node name="mypack">
    <map />
    <node name="test">
      <map>
        <entry key="property1" value="80" />
        <entry key="property2" value="Red" />
      </map>
    </node>
  </node>
</node>
</root>
</preferences>




hashmap