Java 浪费内存加速jvm

Java 浪费内存加速jvm,java,jvm,startup,Java,Jvm,Startup,在Linux和Mac上,有没有一种方法可以预缓存JVM——要么在RAM中,要么在它的某个状态中,这样当我启动Java程序时,它启动的速度就和C/C++程序一样快 我愿意浪费内存来实现这一点。不。不幸的是:( 再想一想,如今Java程序在Windows上启动得更快的原因是有一个进程(Java Quickstart),它在内存缓存中积极地保留运行库文件的副本,这显然非常有帮助。我不知道这种方法是否已移植到Linux 这会不会加载JVM二进制文件和 将LIB存储到内存中,以便 共享 是的,但只在同一个

在Linux和Mac上,有没有一种方法可以预缓存JVM——要么在RAM中,要么在它的某个状态中,这样当我启动Java程序时,它启动的速度就和C/C++程序一样快

我愿意浪费内存来实现这一点。

不。不幸的是:(

再想一想,如今Java程序在Windows上启动得更快的原因是有一个进程(Java Quickstart),它在内存缓存中积极地保留运行库文件的副本,这显然非常有帮助。我不知道这种方法是否已移植到Linux

这会不会加载JVM二进制文件和 将LIB存储到内存中,以便 共享

是的,但只在同一个JVM实例中。因此,您必须像servlet容器一样将应用程序加载到此实例中

JVM调用的整个bootleneck都是类加载,这就是Thorbjørn提到的Java快速启动的原因


因此,您可以将类库放在更快的介质(ram磁盘)上,这可能会加快您的速度(第一次)启动。我曾经在RAM磁盘上安装过Netbeans+JSDK,它启动得非常快,但一旦启动,它的运行速度将与从磁盘加载的速度相同。

如何在启动时启动一个低内存/cpu消耗的java程序并使其永远运行(类似于
while(true){sleep(10);}
。这不会将JVM二进制文件和lib加载到内存中以便共享吗?这不会使其速度达到本机二进制文件的速度,但可能会加快…或者不会加快?如果它们运行在单独的JVM上,我认为这不会有多大帮助。这可能会使运行时缓存升温,但我认为您不会看到速度的显著提高后台程序将不必要地消耗资源,即使只是闲置。在Linux中,库只加载一次,因此第二个JVM的实际内存消耗非常少。@Bombe,我说的是运行时JAR文件中的库代码,即类。@dribeas,不,问题是缓存中有JAR文件,而没有JVM已加载。请考虑逐个打开zipfile中的所有文件。