J
Java-разработчик
@iamjavadev17 подп.
29просмотров
19 января 2026 г.
Score: 32
☄️ JIT-компиляция: почему первые 10 000 вызовов метода — самые медленные Знаете ли вы, что Java компилирует ваш код дважды? Сначала в байт-код, а потом — в нативный код прямо во время выполнения! 🔼 Уровни компиляции C1/C2: 1. Интерпретатор — первые 1-2K вызовов, медленно 2. C1 (клиентский компилятор) — быстрая компиляция, средняя оптимизация 3. C2 (серверный компилятор) — медленная компиляция, агрессивные оптимизации ❓ Что делает C2 таким умным: ✈️ Inlining — подставляет тело мелких методов ✈️ Escape Analysis — выделяет объекты на стеке ✈️ Loop Unrolling — разворачивает циклы ✈️ Dead Code Elimination — удаляет неиспользуемый код 🤓 Практический пример: // До оптимизации public int calculate() { int sum = 0; for (int i = 0; i < 1000; i++) { sum += i * 2; } return sum; } // После JIT (условно): public int calculate() { return 999000; // Всё посчитано на этапе компиляции! } 📈 Как мониторить: -XX:+PrintCompilation # Что компилируется -XX:+PrintInlining # Какие методы подвергаются inlining -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly # Сгенерированный ассемблер ⚠️ Важно для production: Дайте JVM «прогреться» (warm-up) перед нагрузкой! Бенчмарки без warm-up бессмысленны. 📌 Итог: Java — не «медленный» язык. После прогрева он сравнивается с C++ по скорости. Понимание JIT помогает писать JIT-дружественный код. ✈️Подписаться: @iamjavadev #jit #производительность #компиляция #сакральныезнания
29
просмотров
1453
символов
Да
эмодзи
Нет
медиа

Другие посты @iamjavadev

Все посты канала →
☄️ JIT-компиляция: почему первые 10 000 вызовов метода — сам — @iamjavadev | PostSniper