32 位 jvm 上的 Java 程序比 64 位慢

标签 java performance apache-poi 32bit-64bit

我的 Java 程序目前遇到了奇怪的行为:
该程序是一个 JavaFX 桌面应用程序,它使用本地 Selenium 独立服务器打开 Web 应用程序、进行一些输入并下载 Excel 文件。它读取 Excel 文件并将其与另一个 Excel 工作表进行比较并标记差异。

它正在工作,我面临的问题是,生成的 JAR 运行速度比我从 Eclipse 启动项目时慢。唯一显着的性能差异是当我将 Excel 工作表与 Apache POI 进行比较时。

我将问题范围缩小到 JRE - 如果我启动 Jar,它会使用 32 位 JRE,如果我从 Eclipse 启动,它会使用 64 位 JDK。
我用 JConsole 监控了这两个进程,32 位上的 Jar 几乎用了 20 分钟,而 64 位只花了大约 30 秒。

Apache Poi在32位系统上有什么问题吗?或者您对如何更好地监控并找到显着性能的瓶颈有什么想法、建议吗?

最佳答案

尝试代替 JConsole Java Mission ControlFlight Recorder收集性能指标。这应该可以帮助您了解瓶颈在哪里,例如CPU 与网络。最常见的性能问题是堆内存不足,垃圾收集器难以释放它(例如频繁的 OldSpace full GC 周期)。

检查许可证,看看是否可以使用它,据我记得它在开发、非生产环境中是免费的,但最近随着该工具开源,许可证发生了变化。

关于32 位 jvm 上的 Java 程序比 64 位慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50346317/

相关文章:

java - 用于评估 Java 对象上的逻辑表达式的库

python - 有效地查找长整数中的数字序列

java - PixelGrabber 与 getRGB 哪个更快?

快速准确计算double的小数指数

java - 如何迭代电子表格中的所有行(包括空行)

java - JHipster - 从 URL 中永久删除 # HASH

java - 追加到android中的文本文件

java - Java 中的 Docx 到 Pdf 转换器

java - 使用 Apache POI 设置日期格式

java - 什么会导致 Android Activity 无限循环?