Sobes.tech
Junior — Middle
114

Quelle est la différence de volume de mémoire nécessaire entre un thread normal et un thread virtuel?

Réponse de l'IA

sobes.tech IA

Обычные (платформенные) потоки в Java требуют значительных ресурсов памяти, так как для каждого создаётся отдельный стек (обычно несколько сотен килобайт) и системные ресурсы ОС для управления потоком.

Виртуальные потоки (introduced в Project Loom) значительно легче по потреблению памяти, так как они реализуются на уровне JVM и не требуют выделения отдельного системного потока ОС и большого стека. Вместо этого виртуальные потоки используют гораздо меньший стек и могут эффективно переключаться внутри одного или нескольких системных потоков.

Примерно:

  • Обычный поток: стек ~512 КБ (зависит от платформы), плюс системные ресурсы.
  • Виртуальный поток: стек может быть в несколько килобайт, а переключение между ними очень дешёвое.

Это позволяет создавать тысячи и даже миллионы виртуальных потоков без существенного увеличения потребления памяти, что невозможно с обычными потоками.