Java не хватает памяти при создании потока - PullRequest
0 голосов
/ 23 сентября 2019

Я нашел много вопросов здесь об ошибке, которую я получаю, но ни одно из решений не работает для меня.Я надеюсь, что это не считается дубликатом вопроса.Я использую программный инструмент для анализа данных, написанный на Java, и получаю следующую ошибку:

[286.098s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached. 
Exception in thread "main" java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
            at java.base/java.lang.Thread.start0(Native Method)
            at java.base/java.lang.Thread.start(Thread.java:803)
            at edu.mit.compbio.ChromHMM.ChromHMM.trainParametersParallel(ChromHMM.java:9729)
            at edu.mit.compbio.ChromHMM.ChromHMM.buildModel(ChromHMM.java:901)
            at edu.mit.compbio.ChromHMM.ChromHMM.main(ChromHMM.java:12014)

Единственный аргумент, который я даю интерпретатору java, это -Xmx10000M

Большинство людей, которых я видел в этой проблеме, пытаются создать огромное количество потоков, и это является источником их проблемы.Но здесь программа пытается создать только один поток.Я запускаю его на вычислительном кластере и запросил 128 ГБ памяти на узле.Насколько я понимаю, потоки создаются в памяти вне кучи Java, поэтому все равно должно быть доступно 118 ГБ.Я пытался увеличить увеличение размера 10000M, которое я даю Java, но это не имеет значения.Я также добавил -Xss1000M, чтобы придать потоку больший размер стека, но снова получил ту же ошибку.

Я успешно запустил этот инструмент с меньшим количеством входных данных и только начал испытывать эту проблемус большими наборами данных я просто не могу понять, какие ручки повернуть, чтобы было достаточно памяти.Я наблюдал за процессом сверху, и он никогда не использует более 10% доступной памяти, поэтому кажется, что есть некоторая проблема с тем, как эта память распределяется в Java.Есть ли что-то еще, что я могу попробовать, или на данный момент, возможно, это просто то, что инструмент должен быть закодирован по-другому, чтобы иметь возможность обрабатывать большие объемы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...