Все эти потоки по умолчанию должны быть запущены? И поддерживают ли они мою JVM?

У меня есть вопрос относительно потоков, которые мое приложение порождает во время выполнения, и об их статусе.

У меня есть приложение Swing, и я заметил парочку странного поведения в некоторых тестовых сценариях с использованием Java VisualVM. Запустив мою программу в течение 30 + минут, ничего не делая (просто запустив и оставив там работать), я заметил следующее.

Во-первых, во вкладке Threads я вижу много живых потоков. Situation of my application after 30mins or so of not doing anything

Чтение (среди прочего) Потоки по умолчанию, такие как DestroyJavaVM, Обработчик ссылок, Диспетчер сигналов и Что это за потоки, которые запускаются, когда приложение Java начинает свое выполнение? Я понимаю, что у большинства этих потоков есть очень веская причина быть там. (Я все еще пытаюсь разобраться с "RMI TCP")
Однако у меня есть сомнения по поводу их состояния. Это нормально, что первые шесть из них 100% времени находились в состоянии «Работает»?

Кроме того, может ли какой-либо из этих потоков объяснить потребление кучи следующим образом? Heap consumption of my application doing nothing, over 30+ mins

Я заметил, что многие экземпляры HashMap $ Entry и TreeMap $ Entry ссылаются и создаются библиотеками, происходящими из sun.rmi. *, И я подумал, что это может быть связано с потоками "RMI TCP" ...

И последнее, но не менее важное: если я попытаюсь dispose () мой основной JFrame, сам фрейм исчезнет, ​​но приложение все равно будет работать .... могут ли эти потоки быть причиной (или ее частью) ??

Спасибо всем.

8
задан Community 23 May 2017 в 10:32
поделиться