当前位置: 首页 > article >正文

art 虚拟机相关







​​​​​​​虚拟机中对象锁实现分析

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


http://www.kler.cn/a/3487.html

相关文章:

  • 全面解析计算机网络:从局域网基础到以太网交换机!!!
  • NodeJs如何做API接口单元测试? --【elpis全栈项目】
  • 深入探究 YOLOv5:从优势到模型导出全方位解析
  • Linux网络 序列化与反序列化
  • C++ 二叉搜索树
  • 风光并网对电网电能质量影响的matlab/simulink仿真建模
  • 不做孔乙己也不做骆驼祥子
  • ESP8266WiFi模块与Android APP实现数据传输(一)---硬件接线
  • 基于 PyTorch + LSTM 进行时间序列预测(附完整源码)
  • 在Linux下常见压缩文件的解压命令:
  • 面试官:rem和vw有什么区别
  • RTL8201 以太网PHY芯片 调试记录
  • 242. 一个简单的整数问题
  • 面试官:vue2和vue3的区别有哪些
  • PMP项目管理-【第一章】引论
  • 番茄学习法——亲测超级好用
  • 分治法实现合并排序(归并排序),理解分治算法思想,实现分治算法的完美例子合并排序(含码源与解析)
  • Householder 变换及其在QR分解中使用的证明
  • Flutter 本地存储 —— 基本的键值对存储
  • 机器学习笔记第四周+知识图谱
  • java中Map遍历的4种方式
  • Hadoop MapReduce知识预览,WordCount词频统计案例
  • 用JS+CSS打造你自己的弹幕王国,让网页动起来!
  • 蓝桥杯刷题冲刺 | 倒计时14天
  • 【蓝桥杯集训·周赛】AcWing 第96场周赛
  • 微软Bing加入ChatGPT后如何用?教你12种问法黄金公式学会了,又能研究新副业赚钱又能加快学习速度