在标题中,我有一个在两个VM上运行的spring-mvc应用程序。
我的应用程序需要处理大量的消息导入(我使用阻塞执行程序,保持queue
和threadPool
大小非常小)。我为这两个VM设置了相同的JVM选项。基准如下:
但结果却完全不同,在我的windows
VM上,我可以按照我的意愿运行MessageImport过程,并且在OutOfMemory
上时不会遇到linux
错误VM,只需几次导入就会有一些memory error
。从JVisualVM
开始,我可以看到使用过的堆刚刚开始,GC
活动增加,感觉就像VM
正在做一些GC
工作。
我试图在两台机器上使所有参数都相同,现在,它们之间唯一不同的似乎就是 JVM 。
那么有人可以解释这两个虚拟机之间的区别吗?
更新
这里我发布了2张CPU& amp;通过JVisual VM监视器堆。
有没有人遇到同样的问题,有人可以提出一些建议吗? 如有必要,我想我会开始赏金。