Scala 参与者之间共享不可变数据集是否会在下面创建重复的数据集?

Scala 参与者之间共享不可变数据集是否会在下面创建重复的数据集?,scala,akka,Scala,Akka,我有一个例子,每个Akka集群节点(JVM)都有一个参与者负责创建和维护(读/写)一些大型对象的映射。同一节点上的其他参与者需要共享(读取)地图(地图将被传递到某个第三方库中,因此无法通过Akka消息更改地图访问) 我希望通过向同一JVM中的参与者发送映射引用来共享不可变映射 我的问题是:对于我的情况(在同一个JVM中),是否可以确保不会创建重复的映射对象?我对内存使用和性能有些担心。根据 Akka参与者相互发送的消息是JVM对象(例如Scala案例类的实例)。生活在同一JVM上的参与者之间的消

我有一个例子,每个Akka集群节点(JVM)都有一个参与者负责创建和维护(读/写)一些大型对象的映射。同一节点上的其他参与者需要共享(读取)地图(地图将被传递到某个第三方库中,因此无法通过Akka消息更改地图访问)

我希望通过向同一JVM中的参与者发送映射引用来共享不可变映射

我的问题是:对于我的情况(在同一个JVM中),是否可以确保不会创建重复的映射对象?我对内存使用和性能有些担心。

根据

Akka参与者相互发送的消息是JVM对象(例如Scala案例类的实例)。生活在同一JVM上的参与者之间的消息传递非常简单。它是通过引用传递完成的。但是,必须逃离JVM才能到达运行在不同主机上的参与者的消息必须经过某种形式的序列化(即,必须将对象转换为字节数组或从字节数组转换)

这应该只是一个参考

case class ShareMap(m: Map[String, HugeObject])

class MapOwner extends Actor {
  var m: immutable.Map[String, HugeObject] = ???
  override def receive: Receive = {
    case UpdateMap(delta) =>
      val m2 = m ++ delta
      this.m = m2
    case GetMap =>
      sender ! ShareMap(m)
  }
}