【问题标题】:Testing Java for a limited resource environment在有限的资源环境中测试 Java
【发布时间】:2013-02-01 22:25:33
【问题描述】:

我正在编写将在内存很少的环境中运行的 java。我的机器有大量内存,所以我需要限制堆大小(这是我可以应用的唯一限制吗?)。我一直在 Eclipse 中使用“-Xmx100m”作为 VM 参数,但是当我运行应用程序时,我可以在任务管理器中看到使用的内存远高于 100MB。我用错了吗?

另外,我的大部分内存都分配在局部变量中。这些将被放在位于堆空间中的线程堆栈上,对吗?只是好奇,如果我的程序完全由静态方法组成,这些局部变量会分配到哪里?

谢谢!

编辑:我想我应该让我的问题更简单:我怎样才能为 jvm 可视化一个资源较少的环境?

【问题讨论】:

  • 你用 -Xmx 设置的堆大小不是 JVM 使用的总内存,而只是为堆分配保留的空间。 JVM 本身需要内存来运行、加载字节码、管理其运行状态等等。

标签: java memory memory-management limit


【解决方案1】:

堆栈始终存在,并且可以在其上分配变量 - 无论它是否是静态方法。

我还多次观察到 jre 实际上使用的内存比 -Xmx 设置指定的要多。这在this question.中有详细讨论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多