【问题标题】:Can current Java/Tomcat 6 application utilize 64bit windows platform advantage in term of performance and memory usage当前的 Java/Tomcat 6 应用程序能否利用 64 位 windows 平台在性能和内存使用方面的优势
【发布时间】:2011-05-18 06:25:12
【问题描述】:

目前我们已经开发了基于windows 32bit(Dual core & 3G Ram)的Java 6应用程序。 如果我们安装到 64 位 Windows 操作系统中,是否会因为 64 位(Same OS diff.bit)的资源优势而表现更好? 64位机器具有四核处理器和超过4g的内存。 JVM 在 32 位和 64 位之间有什么不同吗?

提前感谢您的反馈。

额外信息

我正在做安全信息事件管理 Sys.(SIEM) - 日志管理。 我们有 4 个重要部分,

  • 收集器 - 从设备/系统收集日志,
  • 聚合器 - 将系统日志聚合为用于报告的元数据,
  • 实时监控 - 显示必须每秒运行的实时分析报告/图表和仪表板
  • GUI - Struts2 应用程序。运行 Web GUI、日志分析、备份和其他功能

到目前为止,1-Collector、2-RealTime、3-Aggregator 使用最多的资源 cpu 和 memory。 目前在 32 位中,收集器每秒最多可以接收 2000 条日志。如果超过,它将崩溃到内存堆。所以我们使用 tanuki 软件自动重启收集器服务。我们使用 Tanuki 来拆分内存使用量,并在检测到内存堆后自动重启。

我们的目标是尽可能利用 64 位优势将每秒事件从 2000 条日志增加到最大值。 对于GC我们让Java自动处理,更重要的是我们可以在1秒内处理更多的日志没有任何问题。

【问题讨论】:

    标签: java windows 64-bit 32bit-64bit


    【解决方案1】:

    切换到 64 位 JVM 并不能保证任何性能差异。但是,您会看到可分配的 RAM 量存在巨大差异。在 32 位 Windows 上,可以为堆分配的最大 RAM 量约为 1.6 GB。

    如果您在 32 位机器上看到与您的应用程序进行大量交换,那么切换到 64 位机器并添加足够的 RAM 可能会提高您的性能。如果存在这样的选择,您也许还可以做出有利于更快但更占用内存的算法的设计选择。

    在撰写本文时,您可能不会发现在完全相同的硬件上运行 32 位 JVM 和 64 位 JVM 之间的显着差异。最终,对 32 位操作系统和 JVM 的支持可能会停止,但这与性能不同。

    我强烈建议您首先分析您的应用,看看您的性能热点在哪里。

    一个常见的误解是 64 位自动意味着比 32 位更好的性能。参见例如this JVM faqthis MS Windows 7 FAQ

    【讨论】:

    • 还请记住,64 位 JVM 将使用大约 1.5 倍的内存(可能更多,取决于您的应用程序),因此请务必给它更多内存。
    【解决方案2】:

    这实际上取决于您的应用程序的性质以及您的性能瓶颈在哪里。

    如果您有相对未调整的垃圾收集,并且您的应用程序对延迟敏感(即必须快速响应用户请求,例如 http 请求),则添加更多内存实际上会恶化您的 GC 暂停。

    您的应用程序是否像大多数 Web 服务器一样是多线程的?如果是这样,如果您没有严重的锁定/争用问题,那么从 2 个内核变为 4 个内核很可能会有所帮助。

    如果您研究 GC 调优,您可能想在 4 核 cpu 上尝试并行 GC。这可以显着减少 GC 暂停时间,同时会产生一些额外的开销。对于我开发的延迟敏感型应用来说,这绝对是值得的。

    请随时回复更多信息 - 我们可以在您的应用中使用一些上下文、它的工作负载、内存中的工作集等。

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2010-09-17
      • 2017-09-05
      • 2011-03-21
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 2016-05-13
      相关资源
      最近更新 更多