java - 字节码查看器还是反编译器最适合理解 JVM 语言代码

标签 java clojure jvm profiler decompiler

我对 JVM 上 Clojure 和 Scala 的一些性能感到困惑,我想知道理解神秘函数代码的最佳方法是什么。我应该学习理解字节码,还是使用分析器来猜测性能?请有经验的人推荐这方面的工具吗?据我了解,JD(http://java.decompiler.free.fr)是最好的反编译器。这是我应该走的路线吗?

最佳答案

反编译器不会告诉您有关运行中代码的性能的信息。读取字节码只是偶尔对理解行为有用,对于更动态的特征,它的用处就更少了。这有几个原因。首先,基于静态分析进行性能调优并不明智,通常只会捕获明显的错误,并可能导致您过早优化。第二个是虚拟机中运行的内容与字节码不同。 Just In Time 编译器将进行许多优化,例如倾斜短方法。

要了解应用程序的性能,您确实需要一个分析器。弄清楚堆的使用情况以及垃圾收集需要多少时间,然后使用采样分析器来查看哪些代码位占用了时间。 IBM 的 Health Center 是一个不错的选择,或者您也可以尝试 Visual VM 或任意数量的其他工具。

关于java - 字节码查看器还是反编译器最适合理解 JVM 语言代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766773/

相关文章:

java - 打印 Axis2 请求响应 XML

clojure - with-meta vs ^{} - Clojure

clojure - 使用 aleph 处理 websocket 客户端消息

java - Windows 7 上不会为已安装的应用程序创建 hs_err_pid 文件

java - 尝试使用资源引入无法访问的字节码

javax.naming.NamingException : Cannot create resource instance of ActiveMQConnectionFactory

java - 分析两位数并打印其各个数字的总和

Java循环引用,糟糕的风格?

clojure - 为什么我必须在这段代码中使用 (flush) ?

java - JVM 消耗 100% CPU,大量 GC