جافا كومة الاستثناء ، مع ammount كبيرة من البيانات ، أي حل؟
-
30-09-2019 - |
سؤال
لدي مشكلة كبيرة مع ذاكرة كومة Java أحاول الترحيل من Oracle Database 11g للوصول إلى ملف 2007
هذه ليست مشكلة أقل من 65.000 سجل ، والآن من هناك ... يلقي التبلور استثناء كومة Java ، ويقوم استهلاك الذاكرة بزيادة أكثر من 600 متر واستخدام وحدة المعالجة المركزية أكثر من 50 ٪ حتى الإطفاء.
بقدر ما أعرف rset.next () لا تحصل على جميع البيانات (أكثر
rset.setFetchSize(1000);
لقد تمحو الكود الخاص بي وأظهر إخراجًا ، نفس الخطأ
while (rset.next()) {
if (cont % 5000 == 0) {
System.out.println(cont + " proccesed and counting ...");
}
}
من فضلك لا تعطيني إجابة استخدام -xm (s ، x) 512 ، 1024 ، إلخ ... يمكن حل هذا ، وليس في حالتي الخاصة (لقد حاولت تعيين هذا xD العالي ، لا شيء سعيد ، أنا حصلت على نفس الاستثناء في 65.000 سجل أيضا)
هل هناك أي خيارات أخرى يمكن أن أجربها ؟؟ ، meaby تغيير بعض تكوينات برنامج التشغيل أو دورات السلسلة ؟؟ الرجاء المساعدة
آسف aboubt لغتي الإنجليزية
هذا هو اتصالي:
Class.forName("oracle.jdbc.driver.OracleDriver");
this.conn = DriverManager.getConnection("jdbc:oracle:thin:@" + getServer() + ":1521:orcl", getUser(), getPassword());
this.stmt = this.conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE);
المحلول
يبدو أن المشكلة هي أنك تستخدم مجموعة نتائج قابلة للتمرير وأنها ستستخدم المزيد من الذاكرة.