У меня есть приложение, которое выполняет очень последовательный набор отдельных задач.
Моя проблема заключается в том, что одна из первых задач потребляет большой объем памяти, и, несмотря на удаление ссылок на объекты и вызов сборщика мусора,только около половины памяти по существу освобождается.Это влияет на последующие задачи.Проблема также в том, что я хочу временно предоставить JVM большую кучу, чтобы эффективно управлять первой задачей, но я не хочу, чтобы это оставалось до тех пор, пока сборщик мусора не решит, что эффективно освободить все остальное.
У меня былоидея выполнения задачи с интенсивным использованием памяти внутри потока;новый дочерний поток использует родительскую JVM (в этом нет ничего удивительного), но в управлении памятью, похоже, нет никаких изменений.
Как Java обрабатывает память потоков?Есть ли простой способ создать дочернюю кучу для подпотока, которая может быть выгружена после завершения потока?
В качестве дополнения вот что я на самом деле хочу сделать:
- Настройка графовой базы данных Neo4j (я создаю несколько миллионов узлов, свойств и связей, а также многочисленные индексы) [интенсивно использует память]
- Выполнение запросов к базе данных графов