Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
For JVM processes running on Linux x64, the default stack size is 1 MB, and this space is reserved by the OS each time you launch a new thread. This makes the math pretty simple. For example, 2,000 threads means that 20 GB of stack space needs to be reserved.
Читать полностью…он запрашивает, а не резервирует, пока вы только не начали специально ОС подкручивать
Читать полностью…Разница по выделению памяти между нативным и виртуальным исключительно в гранулярности
Читать полностью…на винде кстати мб резервирует, там же оверкоммитинга нет
Читать полностью…И я точно помню, что читал, что жвм сама динамически размером стэка для виртуальных управляет
Читать полностью…1мб - это один из классических лимитов. Тебе в любом случае нужно установить верхнюю планку, и резервировать сразу по ней довольно глупо.
Читать полностью…ну это же от сервера зависит.
Quarkus так собственно и делает.
принимает запросы на eventloop vert.x, а дальше, в зависимости от сигнатуры создаёт новый virtual thread или исполняет неблокирующий вызов дальше
если я сделаю void test() { test(); } то у меня бесконечно расширяться стек будет? как в питоне начиная с 3.10? если отключить аппер баунд размера стека или лимит рекурсии
Читать полностью…Дак они существуют внутри хипа, там без вариантов. Если не создавать по необходимости, оно весь хип засрет, в отличие от классической аллокации
Читать полностью…это разве не называется резерв? просто os тебя немного обманывает(но вроде как память тебе обещали)
Читать полностью…https://blogs.oracle.com/javamagazine/post/java-virtual-threads
Читать полностью…Только это платформенный создается с 1 мб, а виртуальный нет
Читать полностью…Если вы хотите три миллиона коннектов, то это фреймворк уже зависит от вашей задачи, а не наоборот
Читать полностью…У тебя хип 1гб. Если ты взял и создал виртуальный тред сразу с 1мб стека, то в хипе поинтер скакнет на этот один мегабайт, даже если там страницы никто не трогал. Этот мегабайт уже реально зарезервирован, в отличие от классической аллокации, и ты выедаешь весь хип на раз. Если же ты создаешь каждый виртуальный тред с 4кб стека и динамически расширяешь по необходимости до этого мегабайта, то ты действительно можешь спамить этими тредами как не в себя.
Читать полностью…