Jeg*_*sch 54 java performance jvm startup
与CPython等其他运行时相比,究竟是什么让JVM(特别是Sun的实现)运行缓慢?我的印象是,无论是否需要,它主要与一大堆图书馆的装载有关,但这似乎不需要花费10年的时间来修复.
想想看,JVM的启动时间与Windows上的CLR相比如何?Mono的CLR怎么样?
更新:我特别关注Unix中常见的小型实用程序的用例.Java现在适合这种风格吗?无论Java发生什么样的启动开销,它是否会为每个Java进程加起来,或者开销只是真正体现在第一个进程中?
Naa*_*aff 20
这是维基百科在这个问题上所说的话(有一些参考文献).
似乎大部分时间都是从磁盘加载数据(类)(即启动时间是I/O限制).
只是要注意一些解决方案:
有两种机制可以更快地启动JVM.第一个是类数据共享机制,自Java 6 Update 21以来一直受支持(仅限HotSpot客户端虚拟机,据我所知仅限于串行垃圾收集器)
要激活它,您需要设置-Xshare(在某些实现上:-Xshareclasses)JVM选项.
要了解有关该功能的更多信息,请访问: 类数据共享
第二种机制是Java Quick Starter.它允许在OS启动期间预加载类,请参阅: Java Quick Starter以获取更多详细信息.
在我的机器上运行带有1.6(Java 6)客户端JVM的普通Java应用程序似乎是即时的.Sun已经尝试调整客户端JVM以实现更快的启动(并且客户端JVM是默认的),因此如果您不需要大量额外的jar文件,那么启动应该是快速的.
| 归档时间: |
|
| 查看次数: |
26145 次 |
| 最近记录: |