欢迎!想了解更多关于如何使用本网站的信息,请参阅关于页面。
我用 VisualVM 找到代码瓶颈时效果不错。但如今它显示所有时间都花在 LockingTransaction 中。有没有任何技巧能够在事务中获取性能结果?
profileTransaction.png gist
我不确定有没有好办法真的看到事务内部的细节。事务通常应当尽可能简单,因为它们是涉及到重试的关键部分,因此我通常更关心像 ref 更新的竞争等问题,为此你可能需要使用不同的分析技术(寻找等待/停滞的线程等)。
如果我现在处于这个阶段,我可能不会使用分析工具,而是会尝试用我的大脑工具去思考事务中的哪些工作/竞争可以被移出关键部分,或者如果引用可以被解开,以减少需要协调的情况。
如果您想分享更多关于引用或事务代码的信息,可能有助于激发这样的想法。