我对 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/