scala类型的内存:堆或堆栈

时间:2018-05-31 06:55:07

标签: scala

Scala的String映射到Java的String。所以引用将在堆中。

Scala的int,float映射到Java的Integer或原始int。什么时候引用包装类和基元类型?

如果是包装类,那么ref会在堆吗?如果它是原始的,那么ref会在堆栈吗?

单个变量如何切换?我读到scala使用它们进行优化。

1 个答案:

答案 0 :(得分:2)

  

什么时候引用包装类和基元类型?

原始类型不能使用包装:例如:它被用作类型参数(Array除外)或传递给采用Any / AnyRef的方法。

您可以通过查看字节码来了解特定情况下使用的内容,请参阅例如https://www.toptal.com/scala/scala-bytecode-and-the-jvm

  

如果是包装类,那么ref会在堆吗?如果它是原始的,那么ref会在堆栈吗?

如果它是原始的,那么就没有参考。堆栈仅用于局部变量。对于IntFloat类型的局部变量,是,使用基本类型。