0

以下に示すように、50,000 個のオブジェクトを ArrayList に追加する for ループがあるため、実行に時間がかかります。

public List<GoogleFeedEntry> getEntries(Iterator it) {
    GoogleFeedUtil gfu = new GoogleFeedUtil(host, prefix, domain, serverName);
    List<GoogleFeedEntry> entry = new ArrayList<GoogleFeedEntry>();
    GoogleFeedEntry gfe;
    GoogleFeedEntryShipping shipping;
    while (it.hasNext()) {
        gfe = new GoogleFeedEntry();
        shipping = new GoogleFeedEntryShipping();
        ProductBO product = (ProductBO) it.next();

        entry.add(gfe);
    }
    return entry;
}

このメソッドの後、次のような別のメソッドを呼び出しています

public void doSomething(){
         //some code here
}

これら 2 つのメソッドを別のメソッド内で呼び出しています。リストに限られた数のオブジェクトを配置した場合、問題なく動作しています。50,000 オブジェクトの場合、次の例外がスローされます

java.sql.SQLException: Maximum open cursors exceeded ORA-01000

これはオラクルとは何の関係もないと感じました(私が正しければ)。もちろん、データベースからすべてのオブジェクトをロードしています。

最初のメソッドでブレークポイントを設定すると、正常に動作します。

最初のメソッドが実行されるまで、どうすれば 2 番目のメソッドを停止できますか?

その理由は何ですか?

4

1 に答える 1