【问题标题】:ManagementFactory issue while upgrading eclipse project to jdk1.7将eclipse项目升级到jdk1.7时出现ManagementFactory问题
【发布时间】:2013-12-30 21:21:04
【问题描述】:

我正在尝试将 eclipse 项目从 jdk 1.6 升级到 jdk 1.7 。

在编译过程中出现以下错误

import sun.management.ManagementFactory;

sun.management.ManagementFactory 类型不可见。

我尝试导入java.lang.management.ManagementFactory 来解决错误;但是下面的代码行抛出错误。

ManagementFactory.getDiagnosticMXBean().dumpHeap

错误: The method getDiagnosticMXBean() is undefined for the type ManagementFactory.

有人可以帮助了解导致此问题的原因以及如何解决它吗?

【问题讨论】:

  • 为什么要明确使用内部的非公共 API?
  • @chrylis :我是这个项目的新手,不知道为什么要使用它。据我所知,代码的目的是查看堆内存使用情况,如果它高于特定百分比,应用程序会尝试调用 gc(在运行时使用 .gc() 方法)并转储堆。
  • 解决问题的唯一正确方法是消除内部 API 的使用。它们不仅可以在版本之间更改,而且仅仅尝试在不同的 VM 上运行可能会导致类加载器错误。
  • 我认为这个答案也适用于这里:stackoverflow.com/a/4184068/772385 一般来说,像这样胡乱使用 JVM 的内部 API 并不是一个好主意。要分析堆,可能值得看一下 Eclipse MAT(eclipse.org/mat) 或 VisualVM(visualvm.java.net)

标签: java java-7


【解决方案1】:

在 Java 7(使用正式发布的java.lang.management.ManagementFactory)中,您可能想尝试将getMemoryMXBean()getHeapMemoryUsage() 组合如下:

ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();

请注意:以上内容经过测试。

编辑:

System.out.println(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().toString());

确实有效。

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 2012-05-31
    • 2011-06-18
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多