我支持需要低延迟(每个消息处理<300微秒)的Java消息传递应用程序.但是,我们的分析显示Sun Java虚拟机最初运行缓慢,并且在前5,000条消息之后加速.前5,000条消息的延迟为1-4毫秒.在大约前5,000个后,后续消息的延迟约为250微秒,偶尔会有异常值.
通常理解这是Java应用程序的典型行为.但是,从业务角度来看,告诉客户他们必须等待JVM"热身"才能看到他们所要求的性能是不可接受的.在处理第一个客户消息之前,应用程序需要"预热"
JVM是Sun 1.6.0 update 4.
克服这个问题的想法:
注意:显然,对于这个解决方案,我正在考虑所有因素,包括芯片拱,磁盘类型和配置以及操作系统设置.但是,对于这个问题,我想集中讨论如何优化Java应用程序并最大限度地减少"预热"时间.
我有一个每天运行的JAVA进程,在JIT完全优化之前需要大约1,000或2,000次点击.我想要做的是保存JIT信息,以便第二天它可以在优化状态下启动.看起来这应该是可能的,但我还没有找到任何方法.