Между этими двумя ответами я не вижу этой информации.GC очистит неактивные потоки, поэтому, если вы позволите потоку выйти из метода run (), он будет очищен GC.Любая память, на которую ссылаются из стека этого потока, будет очищена, если она неактивна, если никакие другие активные потоки не ссылаются на эту память из своего стека или статический корень не ссылается на нее (точка ответа 2 Фалмарри неверна или, по крайней мере, сформулирована неправильно).GC по большей части свободен от рук и автоматически, с вашей стороны мало работы, чтобы фактически освободить память при нормальных обстоятельствах.
Теперь память, которую вы видите, увеличивается при создании потока, иная.Как вы измеряете этот 80K прыжок?Вы используете диспетчер задач, топ или какой-либо инструмент ОС, чтобы увидеть этот удар?Инструменты ОС не очень помогают в истинном понимании того, что происходит внутри JVM.Это может быть освобождение внутренней памяти JVM, которую не видят инструменты ОС.Причина в том, что Java скупа на распределение памяти.Как только он выделяет больше памяти, он сохраняет его, даже если не использует его.Причина в том, что ОС не спешит раздавать память процессам.Удерживая его, если оно понадобится позже, и статистика говорит «да», тогда быстрее просто удержать его, чем освободить.Java вернет память, если у ОС недостаточно памяти или она использует очень мало памяти из общего объема.Это редко так.Java очень эффективна с ее распределением памяти.
Если вы хотите просмотреть память или увидеть больше подробностей, я бы предложил использовать jconsole, который поставляется с JVM.Он покажет вам внутреннюю часть JVM, чтобы вы могли видеть общую память, кучу и 4 пространства (eden, оставшийся в живых, постоянный, поколение Perm), которые составляют кучу.Вы также можете увидеть, сколько памяти занимает ваш код в пространстве Code Gen.Вы даже можете видеть, что ваши активные потоки работают в процессе, поэтому, если у вас есть застрявшие потоки, вы можете диагностировать это и там.И у вас есть возможность запросить GC, чтобы вы могли видеть, как ваше приложение использует память.
Весь смысл в том, что если вы считаете, что у вас есть утечка, вы можете начать понимать ее с помощью этого инструмента,Это супер просто, действительно информативно и бесплатно.Если у вас есть утечка, вам может понадобиться профилировщик памяти, например jprofiler, чтобы сообщить вам более подробную информацию.