我对JVM上的Clojure和Scala的一些表现感到困惑,我想知道理解这些神秘功能代码的最佳方法是什么。我应该学会理解字节码,还是使用分析器来猜测性能?有经验的人会为此推荐工具吗?我知道JD(http://java.decompiler.free.fr)是最好的反编译器。这是我应该走的路吗?
答案 0 :(得分:2)
反编译器会告诉你很少有关于飞行中代码的性能。读取字节码只是偶尔用于理解行为,对于更具动态性的特性,它将更没用。这有几个原因。首先,基于静态分析进行性能调整并不明智,通常只能捕获明显的咆哮,并可能导致过早的优化。第二个是VM中运行的内容与字节码不同。 Just In Time编译器将进行一些优化,例如倾斜短方法。
要了解应用正在做什么,性能明智,您真的需要一个分析器。弄清楚堆的使用情况以及垃圾收集的时间,然后使用抽样分析器查看哪些代码占用了时间。 IBM的健康中心是一个很好的健康中心,或者您可以尝试使用Visual VM或其他任何数量的健康中心。