在Linux& Mac,有没有办法预先缓存JVM - 无论是在RAM中还是在它的状态中,这样当我启动Java程序时,它的启动速度和C / C ++程序一样快?
我愿意浪费记忆来实现这一目标。
答案 0 :(得分:4)
没有。不幸的是:(
第二个想法,这些天Java程序在Windows上启动速度更快的原因是因为有一个进程(Java Quickstart)积极地将运行时库文件的副本保存在内存缓存中,这显然有很大帮助。我不知道这种方法是否已经移植到Linux上。
答案 1 :(得分:3)
不会加载JVM二进制文件和 libs进入内存以便它们可以 共享?
是的,但仅限于同一个JVM实例。因此,您必须将应用程序加载到此实例中,就像servlet容器一样。
JVM调用的整个bootleneck是类加载,这就是Thorbjørn提到的Java Quickstart的原因。
因此,你可以将类库放在更快的媒体(ram磁盘)上,这可能会加快你的(第一次)启动。我曾经在一个RAM磁盘上安装了Netbeans + JSDK并且启动速度非常快但是一旦启动它将比从磁盘加载的速度快。