Android虚拟机
文章平均质量分 88
hl09083253cy
这个作者很懒,什么都没留下…
展开
-
Thread Safety Analysis
http://clang.llvm.org/docs/ThreadSafetyAnalysis.html转载 2017-10-10 13:57:38 · 330 阅读 · 0 评论 -
ART虚拟机的一个缺陷[Java 8 特性]
1.问题背景:[Android Version]:8.0[问题] CTS:tck.java.time.chrono.TCKChronoLocalDateTime#test_from_TemporalAccessor[CTS CMD]:run cts -m CtsLibcoreOjTestCases -t tck.java.time.chrono.TCKChronoLocalDateTime#tes原创 2018-01-18 21:35:11 · 3144 阅读 · 5 评论 -
ART异常处理机制(2) - StackOverflowError 实现
在本篇介绍 StackOverflowError 在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 StackOverflowHandler以及 StackOverflowError的检测以及抛出。先看下StackOve原创 2017-11-22 20:01:40 · 4207 阅读 · 0 评论 -
ART异常处理机制(4) - throw & catch & finally实现
本文深入研究了 java exception的 throw,try-catch在ART中的实现。原创 2017-11-21 18:38:10 · 2589 阅读 · 2 评论 -
Android ANR Trace 详解
本文主要总结一下 Signal Catcher 线程在收到 SIGQUIT(3)后,Dump 信息的流程。Android SourceCode: 6.0Keyword:block signal,kRunnable,kSuspended,Checkpoint,traces.txt1.ART中 block 信号信号的block在虚拟机原创 2017-11-01 21:11:42 · 23954 阅读 · 1 评论 -
ART异常处理机制(3) - NullPointerException实现
在本篇介绍 NullPointerException在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 NullPointerHandler 以及 NullPointerException 的检测以及抛出。原创 2017-11-22 20:20:29 · 2900 阅读 · 0 评论 -
ART异常处理机制(1) - SIGSEGV信号的拦截和处理
主要讲述 Android ART虚拟机的异常处理,StackOverflowError的检测和抛出原理,NullPointerException的检测和抛出原理等。原创 2017-11-14 20:51:18 · 9253 阅读 · 1 评论 -
Dalvik虚拟机GC之 HeapBitmap ,GcMarkStack 与 CardTable
Dalvik虚拟机GC之 HeapBitmap ,GcMarkStack 与 CardTable的创建与使用.原创 2017-01-05 15:18:32 · 1157 阅读 · 1 评论 -
Reference & ReferenceQueue
分析了Java FinalizerReference的创建,Finalizer的执行,以及GC时 Reference的处理。1.Finalizable ClassClass Testpublic class Test { public void finalize() { close(原创 2017-11-01 20:20:51 · 2441 阅读 · 0 评论 -
ART MarkSweep GC MarkingPhase
Android 8.0 MarkSweep MarkingPhaseMarkingPhase 步骤BindBitmaps()FindDefaultSpaceBitmap()heap->ProcessCards()MarkRoots()MarkReachableObjects()PreCleanCards()1.BindBitmaps()Mark Object 是通过 bit原创 2017-10-23 22:46:18 · 1283 阅读 · 0 评论 -
hook read_chk 导致dex2oat进程 abort
1.问题描述Native Crash 如下:Build fingerprint: 'ddddd:7.0/ddddd/7.3.27:user/release-keys'Revision: '0'ABI: 'arm'pid: 23898, tid: 23898, name: dex2oat >>> /system/bin/dex2oat原创 2017-11-01 22:20:17 · 2981 阅读 · 0 评论 -
从 Native 函数调用 Java 函数
从一个Native调用java方法的实例开始:backtrace(gdb) bt#0 art_quick_invoke_stub () at art/runtime/arch/arm64/quick_entrypoints_arm64.S:667#1 0x0000007f8265ae54 in art::ArtMe原创 2017-11-01 20:56:14 · 1705 阅读 · 0 评论 -
从 Java 调用一个 Native 函数
Java 调用Native函数,实际就是 JNI 调用。我们将关注 Java端如何把参数传递到 Native,Java调用Native函数时,额外的做了哪些事情。在前面分析Native 调用Java 函数时,直接打断点,就能得到调用 backtrace,那是得益于 GDB 对 Native代码的调试支持,可以根据包含 symbols的 so库,自动帮忙我们理清原创 2017-11-01 21:03:36 · 5608 阅读 · 0 评论 -
ART Mterp Interpreter 解释 bytecode
Interpreter首先分析 Interpreter 如何解释执行 dalvik byte code,Interpreter 在 ART 7.0有 3种实现:InterpereImplenum InterpreterImplKind { kSwitchImplKind, // Switch-based i原创 2017-11-01 21:06:25 · 3512 阅读 · 1 评论 -
Java Class/Object Memory layout
1. Java class memory layoutclass内存布局可以从下面这个函数来分析一个Java类对应的内存布局:function Class::ComputeClassSize()714715716717718719720721722723724原创 2017-11-01 21:14:45 · 1367 阅读 · 0 评论 -
ART Method Execution
ART Method Execution:1.entry_point_from_quick_compiled_code_ 其作为一个ArtMethod对象的成员, 1.1 一般情况下指向这个函数对应的 quick code的起始地址,而当quick code不存在时,它的值则会代表其他的意义; 1.2 当一个 java 函原创 2017-11-01 21:08:57 · 1349 阅读 · 0 评论 -
ART GC ModUnionTable 实现及使用
上一篇 MarkSweep MarkingPhase的学习中,其实没有完全搞明白ModUnionTable到底是如何工作的,只是根据代码和注释大概知道其意思。本篇来回顾一下 ART 中 ModUnionTable数据结构,以及搞明白它是如何使用的。1.ModUnionTable类// The mod-union table is the union of modified cards.原创 2017-10-27 00:36:58 · 1546 阅读 · 0 评论 -
Android profile-guided dex2oat
KeyWord: ART,Dalivk,.class file,dex file, java bytecode, dalvik bytecode, oat file,profile,dex2oat,app-image1. ART vs Dalvik 涉及的各类文件 开始之前,简单介绍下ART和Dalvik。我们知道 java是运行在java虚拟机JVM上,所以JAVA代码可移植性比较强。Andro原创 2017-11-01 21:17:01 · 8179 阅读 · 9 评论