Java 在Eclipse中运行空程序需要约10 Mb的内存。为什么?
在Java中,此程序:Java 在Eclipse中运行空程序需要约10 Mb的内存。为什么?,java,memory,Java,Memory,在Java中,此程序: public class test { public static void main(String[] args) { try { Thread.sleep(7000); System.exit(1); } catch (InterruptedException e) { e.printStackTrace(); } } }
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
这些兆字节是为什么保留的
环境:
java版本“1.7.0_09-icedtea”
OpenJDK运行时环境(fedora-2.3.3.2.fc17-i386)
OpenJDK Server VM(build 23.2-b09,混合模式)内存用于加载程序和其他相关类、Java运行时、库等。程序使用线程、字符串、异常,这些类反过来又使用许多其他类。考虑到这一点,10Mb实际上更少。jvm在内部管理内存。当应用程序启动时,会加载很多东西。此外,jvm会预先从操作系统获取内存,因此在创建新对象时,开销较小 这涵盖了jvm内存使用的一些方面 摘录:
分配的内存是JVM分配的总内存量,而使用的内存是实际使用的内存量。不要忘记JVM本身-如果我知道您正在Linux的系统内存监视器中检查使用的内存。@Cebence完全正确。JVM将为自己分配相当数量的内存,这样它就不必在每次程序执行分配时按需请求它。您必须查看分析器才能查看实际使用情况。