我对Java类加载的理解是它的懒加载。因此,如果你有一堆Java应用程序附带的未使用的jar文件,它们只会浪费磁盘空间而不会真正消耗内存。然而,它似乎暗示在各种Oracle博客/文档中,压缩配置文件实际上会减少内存占用(here和here)。Java Compact配置文件实际上会减少内存占用量吗?
为了使一个简单的yes或no的问题,是不是主观的:
如果我做一个“世界,你好!” Java应用程序(即仅使用System.out)在通过compact1配置文件运行时实际上是否具有较小的运行时内存占用量,而不是完整的SE?(我会自己测试,但编译紧凑配置文件时遇到问题)。
是的。使用简洁的配置文件,整个JRE不会被加载到内存中。只有所需的运行时间库被加载到内存中。当应用程序类被延迟加载时,当JRE启动时,JRE类将被加载到内存中。 – 2015-02-11 18:05:19
圣洁的废话!因此,基本上'rt.jar'中的所有内容都会被加载,无论它是否被使用?所以它只是将所有这些类加载到内存中,包括corba和rmi废话?这只是特定于'rt.jar'吗?他们为什么要这样做?预加载性能更好吗?你有一个链接,说rt.jar完全加载到init? – 2015-02-11 18:09:51
你必须问Oracle(或Sun)为什么。作为一个例子,我怀疑这个决定是增加启动时间,而不是让应用程序停止并等待加载corba类。个人电脑的内存在1995年便宜而丰富。智能手机已经有十年的时间了。 – 2015-02-11 18:13:51