- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不是在谈论进入同步块(synchronized block)所需的时间。我说的是执行 MonitorEnter 和 MonitorExit 语句所需的时间。并且,如何测量在 C(JNI) 中执行语句所需的时间?我正在使用 Eclipse 和 OSX 开发 Android 应用程序。
最佳答案
在处理无竞争的锁时,当前版本的 Dalvik 使用快速路径来避免重量级线程同步操作。就速度而言,它可能与调用用 Java 编程语言编写的简短的 CPU 绑定(bind)方法大致相同。
如果锁存在争议(也就是说,两个或多个线程正在与其交互),那么这最终会成为一个更重的操作,随着对底层操作系统线程库的调用而使虚拟机触底。也就是说,通常期望执行重量级线程操作所花费的时间主要由被锁定的实际 Activity 主导(因为如果该 Activity 运行时间不是相对较长,那么您就不太可能在其中出现有争议的锁定)第一名)。
与往常一样,分析可以帮助您解决所有问题。
如果您想深入了解,可以在 Android 源代码的 platform/dalvik/vm/Sync.cpp>
中找到重要代码。寻找dvmLockObject
,尽管您必须深入了解 JIT 编译器代码才能获得更完整的故事。
关于java - MonitorEnter操作是否耗时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715022/
我遇到了一个 JNI native 代码,它使用 JNI->MonitorEnter 和 JNI->MonitorExit JNI 调用来同步一段 native 代码。但这现在已经成为瓶颈,严重影响系
我试图找出关键字syncronized在java内部是如何工作的。所以我写了一个非常简单的例子,并使用javap来查看字节码。 SyncTest.java public class SyncTest
我反编译了一个源文件,发现了一些JVM指令,比如JVM INSTR monitorenter和JVM INSTR monitorexit。这些是什么意思? public boolean isRunni
当我们编写 synchronized(some_object){} 时,我们可以看到两条 JVM 指令 monitorenter/monitorexit 作为字节码发出。 当我们编写 synchron
我是一名优秀的程序员,十分优秀!