Junior — Middle
Qual é a diferença no volume de memória necessário entre um thread normal e um thread virtual?
sobes.tech IA
Resposta da IA
Обычные (платформенные) потоки в Java требуют значительных ресурсов памяти, так как для каждого создаётся отдельный стек (обычно несколько сотен килобайт) и системные ресурсы ОС для управления потоком.
Виртуальные потоки (introduced в Project Loom) значительно легче по потреблению памяти, так как они реализуются на уровне JVM и не требуют выделения отдельного системного потока ОС и большого стека. Вместо этого виртуальные потоки используют гораздо меньший стек и могут эффективно переключаться внутри одного или нескольких системных потоков.
Примерно:
- Обычный поток: стек ~512 КБ (зависит от платформы), плюс системные ресурсы.
- Виртуальный поток: стек может быть в несколько килобайт, а переключение между ними очень дешёвое.
Это позволяет создавать тысячи и даже миллионы виртуальных потоков без существенного увеличения потребления памяти, что невозможно с обычными потоками.