У меня, наверное, один тупой вопрос. В настоящее время я тестирую CSP решатели choco и jacop. Когда я запускаю профилирование приложения (раскраска графа, около 3000 узлов), я не до конца понимаю результаты.
Используемое пространство кучи, объявленное профилировщиком, составляет около 1 ГБ памяти. Сумма всех созданных объектов составляет менее 100 МБ. Где остальные 900 МБ оперативной памяти?
Я думаю, что вызовы методов (решатели, вероятно, используют массовое обратное отслеживание) распределяются в стеке, поэтому здесь не должно быть проблемы. Когда я уменьшаю максимальный объем памяти с помощью параметра Xmx, приложение завершается с ошибкой:
Исключение в потоке "main" java.lang.OutOfMemoryError: Превышен предел издержек GC
Таким образом, кажется, что остальная часть не является неиспользованной невыбранной памятью (потому что в этом случае GC освободит ее (и не потерпит неудачу)).
Спасибо за вашу помощь.