Это во многом зависит от ОС и от того, как она управляет потоками.Теоретически это также зависит от того, как JVM реализует потоки, но все современные JVM реализуют их как собственные потоки.
В Linux каждый поток будет использоваться для получения собственного идентификатора процесса, но большинство инструментов скрываютвсе, кроме одного потока на процесс (т. е. вы обычно не видите их, если вы явно не просите их, например, ps
использует флаг -m
).Это вызвано тем фактом, что ядро Linux не имеет большого значения для потоков и задач.
Редактировать: , как я только что узнал, это больше не обязательно случай: вы можете создать поток с точно таким же PID, что и у родителя, и в этом случае потоки будут различаться по различным идентификаторам потоков.
Однако , так как поток делит свою память со всеми другими потоками в том же процессе, этот не не помогает вам выяснить, «сколько памяти занимает поток», поскольку все потоки в процессе будут использовать точноодинаковое количество (и все они используют одно и то же, поэтому реально используемая память составляет shown_memory_use
, а не shown_memory_user * number_of_threads
).