Scala 中如何进行内存分配

How memory allocation takes place in scala

正如我们所知,与 java 不同,scala 将一切都作为对象。

例如我们有-

object A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}

class A{  
    val arg1=1
    def myFun(arg2:Int)=arg1
}

trait A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}

Scala 运行s 在 JVM 上,它基于 Java 库。

scala 文件(*.scala) 将被编译为 java class 字节码和 运行 这些 JVM。例如:

object A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}

将被翻译成(通过javap反编译字节码):

public class A$ extends java.lang.Object{
    public static final A$ MODULE$;
    private final int arg1;
    public static {};
    public int arg1();
    public int myFun(int);
    public A$();
}

class A{  
    val arg1=1
    def myFun(arg2:Int)=arg1
}

将被翻译成(通过javap反编译字节码):

public class A extends java.lang.Object{
    private final int arg1;
    public int arg1();
    public int myFun(int);
    public A();
}

trait A{
    val arg1=1
    def myFun(arg2:Int)=arg1
}

将被翻译成(通过javap反编译字节码):

public interface A{
public abstract void $line5$$read$A$_setter_$arg1_$eq(int);

public abstract int arg1();

public abstract int myFun(int);

}

所以对于你的其他记忆问题,我认为它与 Java.

相同