projects:lock_free_testing:start
Проверка линеаризуемости lock-free алгоритмов
Варианты модификации сущеcтвующего байт-кода
- Подмена ClassLoader`a
- Создать свой кастомный:
- Create a custom system(java -Djava.system.class.loader=com.example.MyCustomClassLoader)
- Использовать библиотеки
- Плюсы:
- Это довольно просто
- Минусы:
- Не понятно, как управлять, кроме как через параметры jvm
- Только статическая инициализация
- Распостраняется на все использования данного класса в программе
- Java instrument
- Java Agent - позволяет менять байт-код
- Javassist - позволяет генерировать байт-код
- Attach API(https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html) - позволяет менять его на лету
- Плюсы:
- Динамическая замена байт-кода(возможно даже в конкретном потоке)
- Классический способ для подмены реализации класса(см. jRebel)
- Минусы:
- Много лишних действий для получения результата
- Ссылки:
projects/lock_free_testing/start.txt · Last modified: 2020/04/14 10:19 by kel