首页 > 在Java中, 利用多线程和开启同样数目的 Java 虚拟机,性能孰优孰劣?

在Java中, 利用多线程和开启同样数目的 Java 虚拟机,性能孰优孰劣?

请问多个虚拟机同时执行,相比多线程是否更具优势?


你是要比较开6个线程在一个JVM中运行
和开6个虚拟机每一个虚拟机开一个线程运行这样比较么?

开一个食堂让6个人吃饭和开6个食堂,每个食堂让一个人吃饭的比较是一样的吧


拿Tomcat来说,可以把一些不常用的会产生较长I/O阻塞的操作比如上传,通过Nginx分发到专门负责处理上传的监听另一个端口的Tomcat实例上,以免影响处理常用服务的Tomcat实例.PHP也一样,可以利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.


一起用,性能更好


绝大多数情况下,当然是多线程更有优势;理由太简单了,Sun/Oracle的JVM在内存管理并不共享,这意味着每个JVM都会有自己的新生代、年老带、持久带、栈空间等一系列重复的内存开销;更别提进程间通讯的复杂度和线程间通讯根本不是一个数量级;还不要算上序列化与反序列化的时间等等;

只有非常少数特殊的情况,多JVM的优势才能体现出来。比如使用cgroup进行JVM进程与CPU的绑定(多见于高并发或高吞吐网络通讯服务器场景)

【热门文章】
【热门文章】