【问题标题】:Java best coding practices for low CPU Utilization [closed]低 CPU 利用率的 Java 最佳编码实践 [关闭]
【发布时间】:2012-12-16 16:11:16
【问题描述】:

谁能提供一些关于 AIX 中低 CPU 利用率的 Java 最佳编码实践的提示? 例如像避免 while(true) 循环,..等 我的要求是我的 java 应用程序应该以低 CPU 使用率运行,这样它就不会占用在同一服务器上运行的其他关键应用程序

【问题讨论】:

  • 我假设没有需要优化的 AIX 特定代码。即标签并不是真正需要的。
  • 你问这个问题有什么特别的原因吗?即,一段让你烦恼的代码?
  • 您好,我的要求是我的 java 应用程序应该以低 CPU 使用率运行,这样它就不会占用在同一服务器上运行的其他关键应用程序
  • @fge 即使 OP 知道从哪里开始,我仍然会说这可能是浪费精力,除非先进行一些分析。
  • @user1929905 你试过降低它的CPU优先级吗?

标签: java performance jakarta-ee garbage-collection aix


【解决方案1】:

运行 CPU 和内存分析器,从 Java 附带的免费 VisualVM 开始,优化耗时最长的代码。

尝试在不使用分析器的情况下优化代码只是猜测。

注意:除非您没有看到 GC 收集,否则分配内存和丢弃垃圾会使用 CPU(并导致缓存流失),因此减少它可以提高 CPU 使用率和性能。

我的要求是我的 java 应用程序应该以低 CPU 使用率运行,这样它就不会占用在同一服务器上运行的其他关键应用程序

我会先降低它的 CPU 优先级,直到你解决问题为止。

【讨论】:

  • 嗨彼得,实际上我的目标是拥有一个不占用太多 CPU 的 java 应用程序
  • 如果您想减少 CPU,最好同时减少产生的垃圾量,这也会使用 CPU,即使您的总消耗量不是问题。
  • 进一步增强了我的问题。请检查
  • @user1929905 我已经回复了你上面的评论。
【解决方案2】:

除了编写不使用过多 CPU 的应用程序外,您还可以使用 nice prioritise applications

非常简单地说,nice 决定了一个特定进程可以消耗多少 CPU 资源,并且可以确保其他进程提前运行(获得更高的 CPU 时间份额)。

存在其他工具/技术 - 请参阅链接了解更多详细信息。

【讨论】:

  • 我也是这么想的,但是我们真的确定对 VM 进行优化可以避免 CPU 占用吗?我的意思是,有一个严格的 while (true) 循环仍然会占用 CPU
  • 如果你“nice”得当,分时将在 JVM 之前分配其他进程。如果没有更多关于正在运行的信息,我不能说更多
  • 当然可以,但是在某个时候,VM 进程将拥有它自己的 CPU 份额,如果应用程序编写得不好,我们可能会遇到一个高峰。我实际上不知道 AIX 调度程序是如何工作的,所以我也不知道会发生什么。但是对我来说是+1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2010-09-27
  • 1970-01-01
  • 2016-05-21
  • 2010-12-01
  • 1970-01-01
相关资源
最近更新 更多