摘自《深入理解Java虚拟机》周志明著
都说因为解释执行的缘故,JAVA比C/C++差; 现在主流JVM都带JIT编译器了,JAVA还比C/C++差吗?
答案:是。缺点如下:
1.JIT是在运行时编译,占用系统开销,挤占了程序本身的资源
2.JVM需要检查空指针、指针越界等问题,耗时
3.JAVA里多态用的更多,很多virtual方法,编译时不好做内联优化
4.JAVA可以动态加载类,改变程序的继承关系,这使得很多全局优化都不好做
5.JAVA在栈上还是堆上分配内存这个机制是固定的,C/C++就灵活多了,可以按需分配,实现更好的性能
6.JAVA要GC,GC耗资源