我有聊天服务器应用程序,我们将部署在3台服务器上。聊天应用程序使用了大量的多线程。
基本上,我必须决定我应该为这3台服务器选择哪种操作系统。所以我想知道linux和windows是如何处理java线程的。有什么关系?谁创建了操作系统线程?他们分配了什么内存?
如果在未来的范围可伸缩性和集群中,哪个选项更好?
发布于 2012-04-07 20:48:25
linux和windows如何不同地处理java线程。
Java的美妙之处在于你并不真正关心它。他们只是在工作。但是,如果您真的很好奇,现代的JVM将线程处理委托给操作系统。所以这更多的是一个操作系统的问题,而不是Java。
有什么不同?
请参见上面的。Java在这里没有什么可做的。它是关于如何在主机操作系统中实现线程的。
是谁创建操作系统线程的?
JVM请求OS创建它们,并在Java Thread对象和本机线程之间提供了一个薄包装器。
他们分配了什么内存?
每个线程都有自己的堆栈(参见-Xss JVM选项)。另外,所有线程共享相同的堆空间。
发布于 2012-04-07 20:59:17
如果在未来的范围内可伸缩性和集群,哪个选项更好?
可伸缩性和集群很可能受到代码内部设计的影响,而不是JVM或底层操作系统。在不深入代码的情况下,关于这一点的每一条陈述都只是热闹的噪音,而不是深刻的陈述。
但Java的好处是:它可以在两个平台上运行,而不需要更改代码。因此,您能做的最好的事情就是:在相同的硬件上对两个OSes进行基准测试(但不要使用任何类型的虚拟化!)用最好的来达到你的目的。
https://stackoverflow.com/questions/10054517
复制相似问题