我目前正在经历Java程序的奇怪行为:
该程序是一个JavaFX桌面应用程序,它使用本地Selenium Standalone Server打开WebApp,进行一些输入并下载Excel文件。它读取Excel文件并将其与另一个Excel工作表进行比较并标记差异。
它正在工作,我面临的问题是,生成的JAR运行速度比从Eclipse启动Project时要慢。唯一显着的性能差异是我将Excel表格与Apache POI进行比较。
我将问题缩小到JRE - 如果我启动Jar它使用32位JRE,如果我从Eclipse启动它使用64位JDK。
我使用JConsole监视这两个进程,32位上的Jar几乎使用20分钟,而64位只需要大约30秒。
32位系统上的Apache Poi有什么问题吗?或者您是否有任何想法,建议我如何更好地监控并可能找到显着性能的瓶颈?
答案 0 :(得分:3)
而不是JConsole尝试使用Java Mission Control Flight Recorder来收集效果指标。这应该可以帮助您了解瓶颈在哪里,例如: CPU与网络。最常见的性能问题是堆内存不足,垃圾收集器难以释放它(例如频繁的OldSpace完整GC循环)。
检查许可证以确定您是否可以使用它,只要我记得它在开发的非生产环境中是免费的,但最近许可证的更改是该工具是开源的。