|
|
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Есть запрос с кучей join'ов в query_string: Код: sql 1. 2. Что с этим можно сделать? Есть всякие JVM Options типа: -Xmx512m -XX:MaxPermSize=192m -XX:PermSize=64m Наверное, какие-то из них отвечают за ограничение памяти для JVM. А можно ли как-то снять совсем ограничения памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 13:55:25 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Это не по-пацански снимать ограничения. Суть процесса такова - да временно можно увеличить хип теми параметрами что вы привели, но потом надо снять хип-дамп, проанализировать его, попытаться оптимизировать и определить "рабочую" конфигурацию памяти. Допустим если определили что под рабочей нагрузкой вам надо 500МБ выставите кучу в 800-900 и тп. И так далее, если невозможно оптимизировать или дешевле купить новый сервер - тоже вариант, но это не отменяет постоянного анализа потребляемой памяти и прямых рук. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:02:58 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Запустите под профайлером. -XX:MaxPermSize=192m и -XX:PermSize=64m отвечают за PermGen space, у вас четко сказано OutOfMemoryError: Java heap Кроме максимального объема кучи -Xmx512m можно указать стартовый -Xms512m. При параллельно сборке бывает что GC не успевает очищать и расширять кучу а CPU занят созданием новых объектов, вот и падает ещё до наполнения кучи. Это легко увидеть в профайлере. Сколько там реально возвращается данных? Для чего вам столько? Для UI можно использовать пейджинг. Есть параметр -XX:+AggressiveHeap, который постарается занять всю доступную память под Java и кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:03:44 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Вот как бы и проблема, что в теории данных может быть очень много и расширение - это полумера, а не решение. Вот если бы совсем снять... Но, наверное, это невозможно, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:06:33 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Niky4000Вот как бы и проблема, что в теории данных может быть очень много и расширение - это полумера, а не решение. Вот если бы совсем снять... Но, наверное, это невозможно, да? ScrollableResults ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:07:55 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Поясню. Ну, допустим, мне очень нужно сделать select всех записей некой таблички, а она очень тяжёлая, например 10Гбайт. Если я её буду засовывать в память сервера целиком, то мне никакого сервера и никакой памяти не хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:11:53 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Niky4000Поясню. Ну, допустим, мне очень нужно сделать select всех записей некой таблички, а она очень тяжёлая, например 10Гбайт. Если я её буду засовывать в память сервера целиком, то мне никакого сервера и никакой памяти не хватит. org.hibernate.ScrollableResults ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:13:35 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Ну, примерно, понял: Что-то типа: q.getResultList().subList(fromIndex, toIndex); Так чтобы не засовывать всё сразу в память. Или q.getResultList().iterator() какой-нибудь. То есть надо чтобы клиент в цикле подтягивал данные и динамически их отображал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:19:06 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Просто там не hibernate, а eclipselink. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:19:40 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Niky4000Просто там не hibernate, а eclipselink. Ааа... Там вроде тоже есть аналоги: http://wiki.eclipse.org/Using_Advanced_Query_API_%28ELUG%29 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 14:46:06 |
|
||
|
Glassfish java.lang.OutOfMemoryError: Java heap space при getResultList()
|
|||
|---|---|---|---|
|
#18+
Мне кажется вот так проще всего и без заморочек: Просто демка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. В результате генерируется что-то типа: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2012, 15:13:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37964053&tid=2130932]: |
0ms |
get settings: |
17ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 296ms |
| total: | 487ms |

| 0 / 0 |
