代码之家  ›  专栏  ›  技术社区  ›  Gibbs

scala类型的内存:堆或堆栈

  •  0
  • Gibbs  · 技术社区  · 7 年前

    斯卡拉的字符串映射到Java的字符串。所以引用将在堆中。

    斯卡拉的int,浮点映射到Java的整数或本原int。它什么时候引用包装类和基元类型?

    如果它是包装类,ref是否在堆中?如果它是原语,ref会在堆栈上吗?

    对于单个变量,这种转换是如何发生的?我读到scala将两者用于优化。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Alexey Romanov    7 年前

    它何时引用包装类和基元类型?

    当基元类型不能是时使用包装器:例如,它用作类型参数(而不是 Array )或传递给方法获取 Any / AnyRef .

    您可以通过查看字节码来判断在特定情况下使用了什么,请参见例如。 https://www.toptal.com/scala/scala-bytecode-and-the-jvm .

    如果它是包装类,ref是否在堆中?如果它是原语,ref会在堆栈上吗?

    如果是原始的,就没有参考。堆栈只用于局部变量。对于类型为的局部变量 Int Float ,是,使用基本类型。

    推荐文章