在scala / akka中两个actor之间传递消息时内存中发生了什么?假设我有两个角色Actor1和Actor2,而Actor1向Actor2发送一个大小为10000的arraylist,它可能包含整数或字符串或对象。
记忆中会发生什么?从我到目前为止所听到的是,演员们不会分享记忆,但他们分享了国家和#34;。这是否意味着来自actor1的arraylist将被复制到actor2?但这听起来效率低下,我无法找到有关这些事情的信息。任何文件?有很多关于演员如何交换乒乓消息的例子,这些例子是多余的。
答案 0 :(得分:2)
适用于同一JVM上的演员
akka消息限制之一是不可变性。因此,您可以使用不同的邮箱共享对同一邮件对象的引用。每个actor都有邮箱 - 通常是一个包含带消息的信封的队列。每条消息都是对象的引用。因此,当您发送数组时,只是将引用添加到actor的邮箱中,如果它是不可变对象,则不会出现共享数据问题。