Sobes.tech
Back to questions
Junior — Middle
65

Какое отличие в объеме необходимой памяти существует между обычным потоком и виртуальным потоком?

Answer from AI

sobes.tech AI

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

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

Примерно:

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

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