java - Java 程序的程序计数器寄存器值

标签 java profiling

是否可以获取正在运行的 Java 应用程序的程序计数器 (PC) 寄存器值,尤其是在 Android 模拟器中运行的应用程序?例如,gprof 随机抽样 PC 寄存器值,以找出哪个函数正在消耗程序的运行时间。这样的概念对 JVM 有意义吗?澄清一下,我想要程序计数器的实际值。

另外,有什么方法可以衡量代码在内存中的“分布”情况吗?这在某种程度上可以通过查看 objdump 返回的地址范围在常规程序中进行测量。但是,这种方法不处理共享库的地址,这也是我在 JVM 上下文中不理解的概念。

最佳答案

许多 Java 分析器喜欢 VisualVM可以进行基于采样的分析,这可能会像您描述的那样工作。

至于代码内存使用,这是垃圾收集器的“永久代”(PermGen)主要包含的内容; VisualVM 也可以显示它。

关于java - Java 程序的程序计数器寄存器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295543/

相关文章:

java - iText - 如果有可用空间,则在最后一页末尾添加表格

java - 如何用方法替换 Display#asyncExec(Runnable) ?

haskell - 为什么我的 Haskell 程序这么慢? Haskell 编程,人生游戏

c++ - 使用分配器 Hook 时如何检索被释放的字节?

c# - 函数分析问题 - Visual Studio 2010 Ultimate

iphone - 减少 iPhone 应用程序启动时间

java - 在 JPA 查询中,我可以将属性顺序和 DESC/ASC 顺序作为方法签名中的参数传递吗?

java - 复合赋值运算符出现奇怪的双整数加法错误

java - 如何获取android sqlite数据库中的所有表名?

java - 如何减少我的应用程序的CPU消耗