虚拟机中对象锁实现分析
Android 库加载命名空间
https://source.android.google.cn/docs/core/architecture/vndk/linker-namespace
Android共享库命名空间-CSDN博客
编译
prebuilts/clang/host/linux-x86/clang-r450784d/bin/llvm-addr2line -f -C -e out/target/product/mssi_64_cn_armv82/apex/com.android.art/lib64/libart.so
NDK
https://developer.android.com/about/versions/nougat/android-7.0-changes#ndk
AppData\Local\Android\Sdk\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-readelf.exe -dW libjvmti_agent.so
https://developer.android.google.cn/ndk
从Android高版本开始,Android ndk规定了第三方可以使用的稳定的api(可以查看google官方的介绍https://developer.android.google.cn/ndk/guides/stable_apis.html
SandHook 修改art 符号
javah -jni -cp nativehook\src\main\java\ -d SandHook-master\nativehook\src\main\jni com.xx.NativeHook
Java 跟jni 类型
JNI数据结构 JNINativeMethod_封烬杀的博客-CSDN博客
Native 层和java 层互相调用
Java与Native相互调用示例及讲解_native调用java_戏台无戏子&youngthful的博客-CSDN博客
prebuilts/clang/host/linux-x86/clang-r450784d/bin/llvm-nm -D out/target/product/mssi_64_cn_armv82/obj/SHARED_LIBRARIES/libart.com.android.art_intermediates/libart.so | grep -i setjavadebugg
Native 内存泄漏
全民K歌内存篇3——native内存分析与监控 - 腾讯云开发者社区-腾讯云
Android malloc_debug
https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README_marshmallow_and_earlier.md
[原理] Android Native内存泄漏检测原理解析
https://www.cnblogs.com/zzcperf/articles/11615655.html
https://www.cnblogs.com/zzcperf/p/9563389.html
development/scripts/native_heapdump_viewer.py
AndroidStudio如何使用Address Sanitizer(ASan)
https://blog.csdn.net/qq_14873525/article/details/117957095
Android性能优化之JVMTI与内存分配
Android性能优化之JVMTI与内存分配 - 爱码网
wrap.sh 方法root
libc init
https://www.cnblogs.com/ilocker/p/4645308.html
环境变量hook,wrap
Android 动态修改Linker实现LD_PRELOAD全局库PLT Hook_ld_preload android_今天写几行代码的博客-CSDN博客
打包wrap
封装 Shell 脚本 | Android NDK | Android Developers
其它
C++ pirmer
GitHub - applenob/Cpp_Primer_Practice: 搞定C++ 。C++ Primer 中文版第5版学习仓库,包括笔记和课后练习答案。
Art配置
Configuring ART | Android Open Source Project
Jvmti
JVM(TM) Tool Interface 1.0.38
反优化:deopt
https://blog.csdn.net/z1032689332/article/details/120412569
锁优化
CAS compareAndSwap
Atomic integer 使用 CAS 实现
单向链表
AQS AbstractQueuedSynchronizer jdk 并发编程,ReetrantLock(公平,按执行顺序 LockSupport.unpark和非公平 ,按照CAS 抢锁),CountDownLatch 基于其实现
AQS双向链表 CLH
百度安全验证
关于CAS等原子操作介绍 无锁队列的链表实现方法-电子发烧友网
C++11提供的原子数据类型< atomic >
并发使用std::atomic,对特种内存使用volatile
volatile变量并不意味着记忆障碍,不具备exchange或compare_exchange_*的操作std::atomic<int>
std::atomic,可能需要使用boost :: atomic
std::atomic<T*> 原子指针
std::atomic<node> head;
node new_node(data);
node a;
std::atomic_init(&head, a);
head.store(a);
node current = head.load(std::memory_order_relaxed);
std::atomic<uint>* atomic_buffer = reinterpret_cast<std::atomic<uint>*>(data);
const size_t num_atomic_elements = svm_data_size / sizeof(std::atomic<uint>);
for (i = 0; i < num_atomic_elements; i++) { std::atomic_init(&atomic_buffer[i],
std::atomic<uint>(0));
}
基于双向链表实现无锁队列
基于双向链表实现无锁队列_路行的亚洲的博客-CSDN博客
单链表
https://www.hiyu.space/2021/02/20/C-%E5%A4%9A%E7%BA%BF%E7%A8%8B%EF%BC%88%E4%BA%94%EF%BC%89-%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C%E4%B8%8E%E6%97%A0%E9%94%81%E7%BC%96%E7%A8%8B/
C++原子操作
Memory order
https://www.csdn.net/tags/Ntjacg3sMTM3My1ibG9n.html
std::atomic_compare_exchange_strong(q->tail,tail,*next);
//q->tail.compare_exchange_strong(tail,next);
continue;
reinterpret_cast<message_t*>(std::atomic_load(q->tail));
q->tail.load()
std::this_thread::yield();
CAS compareAndSwap
Atomic integer 使用 CAS 实现
单向链表
AQS AbstractQueuedSynchronizer jdk 并发编程,ReetrantLock(公平,按执行顺序 LockSupport.unpark和非公平 ,按照CAS 抢锁),CountDownLatch 基于其实现
AQS双向链表 CLH