1

在 Java 中,这个程序:

public class test {

    public static void main(String[] args) {

        try {
            Thread.sleep(7000);
            System.exit(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

}

当我在 Eclipse 中运行它并检查系统监视器以查看它是否拥有约 10Mb 的内存时,它只是休眠了 7 秒。在没有 Eclipse 的终端中运行程序也需要 10Mb。

这些兆字节是为了什么而保留的?

Env : java 版本 "1.7.0_09-icedtea" OpenJDK Runtime Environment (fedora-2.3.3.2.fc17-i386) OpenJDK Server VM (build 23.2-b09, 混合模式)

4

2 回答 2

1

该内存用于加载您的程序和其他相关类、Java 运行时、库等。您的程序使用 Thread、String、Exception,它们又使用许多其他类。考虑到这一点,10Mb 确实更少。

于 2013-04-13T20:52:11.343 回答
1

jvm 内部管理内存。启动应用程序时会加载许多内容。此外,jvm 会抢先从操作系统获取内存,因此在创建新对象时开销较小。

本文涵盖了jvm内存使用的一些方面。

摘录:

分配的内存是JVM分配的内存总量,而使用的内存是实际使用的内存量。

于 2013-04-13T20:55:13.627 回答