データを1行ずつ含むフラットファイルから、DBからデータを検証するタスクが存在しません。最初にJavaを使用して、HashSet1と別のHashset2にフラットファイルデータを挿入しました。その後、DBデータには、Hashset1.Contain(Hashset2)をチェックして、DBに存在しないデータを識別できるようにしています。下記のスレッド "main"内の例外java.lang.OutOfMemoryError:何百万ものデータを検証しようとしているときにJavaのヒープスペース
は、[ファイルリーダーのデータとhashset2として(一部欠落データである)hashset1をとることができるダミーコード(デシベルからの完全なデータ)であるDBデータとして
が、私はここに述べたように、私は30万のデータを持っています検証する必要があるため、私はこの方法で100万のデータを検証することができますが、私の仕事である3000万のデータを検証することはできません。これを親切に提案するための最善の方法はありますか、何らかの種類のコードがあれば、とても感謝しています。
public class App
{
public static void sampleMethod() {
Set<Integer> hashset1 = new HashSet<Integer>();
Set<Integer> hashset2 = new HashSet<Integer>();
for(int i = 0; i<30000000; i++) {
if(i %50000 != 0) {
hashset1.add(i);
}
}
int count = 0;
for(int j =0;j<30000000;j++) {
if(hashset1.contains(j)) {
count++;
} else {
System.out.println(j+" Is Not Present");
hashset2.add(j);
}
}
System.out.println("Contain Value Count" + count);
}
public static void main(String[] args)
{
sampleMethod();
}
}
エラースタックトレース:2つのデータセットを結合するため
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:703)
at java.util.HashMap.putVal(HashMap.java:662)
at java.util.HashMap.put(HashMap.java:611)
at java.util.HashSet.add(HashSet.java:219)
at com.java.anz.BankingPro.App.sampleMethod(App.java:20)
at com.java.anz.BankingPro.App.main(App.java:38)
問題の説明は、句読点がないため少しわかりにくいです。また、例外スタックトレースを提供して、他の人がアプリの実行中に実際に何が起きたのかを確認するのに役立ちます。 – Kamil
@Kamil bhai Stack Traceを提案しました。 –
データファイルの内容をテンポラリテーブルにダンプし、SQLクエリーを実行したいことがあります。 – Berger