如何检查java程序使用了多少资源?

时间:2009-06-29 07:42:44

标签: java optimization embedded

如何检查java程序使用了多少资源?

在java中很容易创建一个很棒的程序,几乎可以完成你想要的所有程序,但是有一点副作用就是很容易间接地分配给很多内存和cpu周期(即让我们只是在错误的地方使用“新”几次。)

如果该程序应该在资源非常有限的环境中运行,那么就说嵌入式内容或手机(J2ME,Android等), 了解您的计划资源如何至关重要。

注意:由于我的主要焦点是过去几年,我可能会在这里遗漏一些非常简单的东西,所以请不要假设太多;)

由于 约翰

4 个答案:

答案 0 :(得分:5)

maxMemory();
totalMemory();
freeMemory();

答案 1 :(得分:4)

你似乎对你真正需要的东西感到有些困惑。在你的问题中,我感到有些不安,“有多少资源会让我后面的狼吞噬我以后咬我?”。

对此的答案是,道格拉斯亚当斯解释道:“别恐慌!” : - 。)

说真的,Java并不一定比“本机”应用程序使用更多的资源,所以你可能不用担心。

快速简要说明:

  • 由于JVM,Java程序将具有固定的内存开销,即使是一个简单的程序也会占用几MB的内存。然而,对于更复杂的软件而言,这不会增长,因此在实践中通常不会出现问题。此外,并行运行的几个Java VM将共享大部分RAM。
  • CPU:通常,Java程序将使用与等效本机程序相同的CPU时间。 Java需要更多的原因并不是根本原因。垃圾收集确实有一些开销,但通常并不重要(手动内存管理也有开销)。
  • 也就是说,意外保留对象或不必要的大对象等都会导致内存问题。但是当你出现问题时,这就是你要解决的问题。

简短版本:别担心,只需像往常一样:让它运行,使其正常运行,使其快速运行(通过分析)。

答案 2 :(得分:1)

如果您尝试在程序之外捕获这些属性以进行性能测试;您可能还想使用Java Profilers。那里有很好的剖析器。 Java 6还提供了一种执行这些活动的方法。 例如 J Profiler 如果你想要更多这样的工具;让我知道。

答案 3 :(得分:0)

从Java 1.6开始,有一组允许监视JVM的工具。其中一个是jmap。你可以看看它。

我不太确定它如何应用于J2ME,但我猜你可以将相同的技术应用于计算机上的J2ME模拟器(使用完整的JVM,而不是KVM)。