Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


projects:lock_free_testing:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
students:lock_free_testing:start [2020/02/16 16:39] – created kelprojects:lock_free_testing:start [2020/04/14 10:19] (current) – ↷ Page moved from students:lock_free_testing:start to projects:lock_free_testing:start kel
Line 1: Line 1:
 ====== Проверка линеаризуемости lock-free алгоритмов ====== ====== Проверка линеаризуемости lock-free алгоритмов ======
-> Вырастает из темы: //[[etc:users:kel:jre_fuzzy_threads_planning]]//+> Вырастает из темы: //[[etc:users:kel:jre_fuzzy_threads_planning[]]// 
 + 
 +---- 
 + 
 +===== Варианты модификации сущеcтвующего байт-кода ===== 
 +  - Подмена ClassLoader`a 
 +     - Создать свой кастомный:  
 +       * Create a custom system(java -Djava.system.class.loader=com.example.MyCustomClassLoader) 
 +     - Использовать библиотеки 
 +       * https://www.osgi.org/ 
 +       * https://github.com/kamranzafar/JCL 
 +     * Плюсы: 
 +       * Это довольно просто 
 +     * Минусы: 
 +       * Не понятно, как управлять, кроме как через параметры jvm 
 +       * Только статическая инициализация 
 +       * Распостраняется на все использования данного класса в программе 
 +  - Java instrument 
 +    * Java Agent - позволяет менять байт-код 
 +    * Javassist - позволяет генерировать байт-код 
 +    * Attach API(https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html) - позволяет менять его на лету  
 +    * Плюсы: 
 +          * Динамическая замена байт-кода(возможно даже в конкретном потоке) 
 +          * Классический способ для подмены реализации класса(см. jRebel) 
 +     * Минусы: 
 +       * Много лишних действий для получения результата 
 +     * Ссылки: 
 +       * https://www.baeldung.com/java-asm 
 +       * https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html 
 + 
  
  
projects/lock_free_testing/start.1581860350.txt.gz · Last modified: 2020/02/16 16:39 by kel