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
Next revisionBoth sides next revision
students:lock_free_testing:start [2020/02/16 16:39] – created kelstudents:lock_free_testing:start [2020/03/03 22:19] ashahov
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.txt · Last modified: 2020/04/14 10:19 by kel