【发布时间】:2013-03-11 08:04:39
【问题描述】:
我只是在比较 scala actor 与 java 线程的性能。
我很惊讶地看到差异,我观察到使用我的系统我最多只能生成约 2000 个线程(一次运行)但使用相同的系统我能够生成约 500,000 个 scala 演员。
两个程序都使用了大约 81MB 的 JVM 堆内存。
你能解释一下 java 线程是如何比 scala / akka 演员重这么多的吗? scala-actor 如此轻量的关键因素是什么?
如果我想获得最佳的可扩展性,我应该选择基于 actor 的 Web 服务器,而不是像 JBoss 或 Tomcat 这样的基于 Java 的传统 Web/应用服务器吗?
谢谢。
【问题讨论】:
-
至于您的网络服务器问题,这取决于您的需要。确实有一些基于 NIO 的高吞吐量可扩展解决方案,例如 Netty,而且它们不使用演员。你需要一个成熟的网络服务器吗?高流量服务?与已知框架(jee、spring...)的高度集成?一般的演员,特别是 Akka 2.1 支持集群,或播放!它基于 akka,也是一个“可扩展”的解决方案,但没有适用于所有场景的灵丹妙药。这真的取决于您的需求。
标签: java multithreading performance scala akka