首页 文章

在scala / akka中两个actor之间传递消息时内存中发生了什么?

提问于
浏览
1

在scala / akka中两个actor之间传递消息时内存中发生了什么?假设我有两个角色Actor1和Actor2,而Actor1向Actor2发送一个大小为10000的arraylist,它可能包含整数或字符串或对象 .

记忆中会发生什么?从我到目前为止所听到的是“演员不分享记忆,但他们分享国家” . 这是否意味着来自actor1的arraylist将被复制到actor2?但这听起来效率很低,我无法找到有关这些事情的信息 . 任何文件?有很多关于演员如何交换乒乓消息的例子,这些例子是多余的 .

1 回答

  • 2

    For actors on the same JVM

    akka消息限制之一是不可变性 . 因此,您可以使用不同的邮箱共享对同一邮件对象的引用 . 每个actor都有邮箱 - 通常是一个包含带消息的信封的队列 . 每条消息都是对象的引用 . 因此,当您发送数组时,只将引用添加到actor的邮箱中,如果它是不可变对象,则不会出现共享数据问题 .

相关问题