1、JVM的运行模式
vm一般有两种运行模式,client和server(JDK 7 后有第三种 Tiered server,后续会涉及到)。
- client : 启动快,内存占用少,JIT编译器生成代码的速度也更快。
- Server:提供了更为复杂的生成代码优化功能,这个功能对于服务器应用来说更为重要,大多数Server模式的JIT编译优化都要消耗额外的时间用以收集更多的应用程序行为信息,为应用程序运行生成更为优化的代码。
- 在JDK7 开始,提供了一种Tiered Server模式,结合了上面两种的长处,即快速启动并且能够高效生成代码。可以通过:-server -XX:+TieredCompilation 命令选项启用。
2、JVM 32还是64位的选择
原则是由应用程序的内存占用来决定,有如下原则可以参考:
OS | java堆大小 | 32位还是64位JVM |
win | <1300M | 32位JVM |
win | 1300M<x<32G | 使用-d64 -XX:+UseCompressedOops 启用64位JVM |
win | >32G | 使用-d64 启用64位JVM |
linux | <2G | 32位JVM |
linux | 2G<x<32G | 64位 |
linux | >32G | 64位 |
solaris | <3G | 32位 |
solaris | 3G<x<32G | 64位 |
solaris | >32G | 64位 |