Ахаха, Hotspot

Что Ты Делаешь, Прекрати!

#openjdk #mystery #hotspot

#jokerconf #jugru

Gleb Smirnov

me@gvsmirnov.ru

$ jstat -gccause [...]

Timestamp     LGCC                                       GCC
1.6           Last ditch collection                    No GC
1.7           No GC                    Last ditch collection
1.8           No GC                    Last ditch collection
1.9           No GC                    Last ditch collection
2.0           No GC                    Last ditch collection

LIVE DEMO TIME!

Структура Папок Hotspot

hotspot/src/
├── cpu # CPU specific
│   └── [x86, sparc, ...]
├── os # OS specific
│   └── [bsd, linux, windows, ...]
├── os_cpu # OS and CPU specific
│   └── [bsd_zero, linux_sparc, windows_x86, ...]
└── share
    ├── tools # Stuff you probably won't need
    └── vm # Most of the interesting stuff
hotspot/src/share/vm
├── c1 # Client compiler
├── classfile # Class loading, verification, representation, ...
├── code # Machine code management
├── compiler # Things common for the compilers
├── gc_* # Garbage Collection
├── interpreter # Interpreter for experiments
├── memory # Base stuff for memory, also the Universe lives here
├── oops # Ordinary Object PointerS
├── opto # Server compiler
├── prims # Unsafe, JNI, JVMTI, lots of stuff
├── runtime # VM runtime, threading, perf data, LOTS of stuff
└── [...]

Use grep, Luke!

Use NetBeans, Luke!

jdk9/common/nb_native/nbproject/
  • Find Usages
  • Подсветка синтаксиса
  • Обработка макросов
  • Всё работает* прямо из коробки

Баги Могли Уже Исправить

$ hg grep -f --all '::_no_gc'
[...]
vmGCOperations.cpp:2097:+:  assert(((_gc_cause != GCCause::_no_gc)
$ hg log --rev 2097
[...]
summary:     7015169: GC Cause not always set

Как найти нужную сборку Hotspot

$ hg log --rev "last(::2097 and tagged(), 10)"
[...]
changeset:   1993:102466e70deb
tag:         jdk7-b127
[...]

Не путать: b127 и u127 — не одно и то же

Сборки, Апдейты, Версии

$ java -version
java version "1.7.0_51" # update 51
Java(TM) SE Runtime Environment (build 1.7.0_51-b13) # build 13
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

У Hotspot своя версия и свои сборки. Лучше смотреть на теги.

Проверяйте Свои Гипотезы

Сообщество — Ваш Друг

Дополнительные Материалы