У меня возникла следующая проблема с Hbase.HBase java.lang.OutOfMemoryError
У меня есть скрипт, который запускает оболочку HBase и вставляет много строк в таблицу с одним столбцом. Я попытался вставить 10 000 строк, но после примерно 1700 я получаю страшную ошибку «java.lang.OutOfMemoryError: невозможно создать новый собственный поток». Я попытался изменить размер кучи Java от 1000mb по умолчанию до 1800mb, но это не позволяет мне вставлять больше, чем 1700 строк.
Однако я заметил, что могу вставить 1000 строк, выйти из оболочки, перезапустить оболочку, вставить еще 1000 в ту же таблицу, выйти еще раз и т. Д. И т. Д. Я не очень разбираюсь в JVM, чтобы понять, почему это позволяет мне делать это в несколько сеансов, но не позволяя мне вставлять в нее один и тот же сеанс.
Может кто-нибудь объяснить мне, что здесь происходит, и что я могу сделать с этим?
EDIT:
Я теперь с помощью 64-битной машине, Red Hat Linux 5, с Java 1.6. Я даю HBase кучу 20gb (у меня есть общая память ~ 32 гигабайта). Для размера стека, я даю 8 МБ. По умолчанию на 64-битной версии - 2 Мб; с 2mb я получил ту же ошибку, и увеличение ее до 8mb вообще не помогло (я мог вставлять столько же строк, независимо от размера стека, ~ 1700).
Я читал, что уменьшение размера кучи может привести к ошибке, но это тоже не помогло. Ниже приведены параметры jvm, которые я устанавливаю (все по умолчанию, кроме размера стека).
HBASE_OPTS="$HBASE_OPTS -ea -Xss8M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
Можете ли вы рассказать, какие настройки JVM вы устанавливаете? – Pushkar
Спасибо ... Смотрите мое редактирование выше. – knt