在Java中,这个程序:
public class test {
public static void main(String[] args) {
try {
Thread.sleep(7000);
System.exit(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我在Eclipse中运行时只是睡了7秒钟并检查系统监视器,看它是否拥有~10Mb的内存。在没有Eclipse的终端中运行程序也需要10Mb。
保留那些兆字节?
的Env : java版“1.7.0_09-icedtea” OpenJDK运行时环境(fedora-2.3.3.2.fc17-i386) OpenJDK Server VM(build 23.2-b09,混合模式)
答案 0 :(得分:1)
该内存用于加载程序和其他相关类,Java Runtime,libraries等。您的程序使用Thread,String,Exception,而后者又使用许多其他类。考虑到这一点,10Mb真的更少。
答案 1 :(得分:1)
jvm内部管理内存。启动应用程序时会加载很多东西。此外,jvm会先从操作系统中获取内存,以便在创建新对象时有更小的开销。
这个article涵盖了jvm内存使用的一些方面。
摘录:
分配的内存是JVM分配的总内存量,而使用的内存是实际使用的内存量。