【问题标题】:How to get information about a different java process (another JVM instance running different processes) from one JVM process?如何从一个 JVM 进程获取有关不同 Java 进程(运行不同进程的另一个 JVM 实例)的信息?
【发布时间】:2012-02-09 21:35:43
【问题描述】:

我正在编写单元测试以了解 MyClass 实例占用了多少内存。 我似乎对随机混乱的垃圾收集器无能为力,它告诉我我的MyClass[] myinstances=new MyClass[10000]; 占用了负内存,所以我决定启动 2 个新的 JVM 进程,它们只是启动一个包含 main 方法的类,它实例化一个巨大的arry和挂起。

我知道我可以使用 Runtime.getRuntime.exec("java my.package.SomeClassWithMainMethod"); 启动一个新的 JVM

所以我的问题是:如何获取有关我启动的 JVM 占用的内存量的信息?

谢谢,你们统治。

【问题讨论】:

  • 您正在寻找任何工具(或)以编程方式查找内存?
  • 启动时有一个参数传入JVM; JVM 将占用您作为该参数传入的最大内存量。这些:-Xss512k -Xms64m -Xmx512m

标签: java memory process jvm


【解决方案1】:

您可以使用 JVisualVMJConsole ,它们从 1.6 开始包含在 JDK 中

【讨论】:

    【解决方案2】:

    我认为您最好使用分析器,jvisualvm 可能已经足够好,并且随您的 Java 发行版一起提供。看到这个问题:How to determine the actual memory usage of a data structure

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      相关资源
      最近更新 更多