我在一台Linux机器上并使用openjdk7。在使用-server选项时,发现我的代码执行速度提高了两倍,我深入研究了虚拟机内部发生的事情,发现服务器虚拟机像疯了一样嵌入我的代码,而客户机虚拟机根本不内联。客户端VM未内联?
这是正常的行为吗?
我在一台Linux机器上并使用openjdk7。在使用-server选项时,发现我的代码执行速度提高了两倍,我深入研究了虚拟机内部发生的事情,发现服务器虚拟机像疯了一样嵌入我的代码,而客户机虚拟机根本不内联。客户端VM未内联?
这是正常的行为吗?
Server VM期望程序运行时间很长,因此可以执行更复杂的优化。通常使用服务器虚拟机很有用,但内联可能会导致更多的内存消耗。 – MrSmith42
如果您正在寻找改变JVM运行模式的方法,您还需要确保您了解在多线程应用程序中对可见性的潜在影响,因为由于策略差异导致交换机可能产生意想不到的后果模式之间的操作。 – codeghost
为了更深入地理解差异,你可以看看http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client – Taky