Apo*_*rma 7 java memory memory-management scala allocation
我们知道,与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
}
Run Code Online (Sandbox Code Playgroud)
Scala在JVM上运行,它基于Java库.
scala文件(*.scala)将被编译为java类字节码并在JVM上运行它们.为你的例子:
object A{
val arg1=1
def myFun(arg2:Int)=arg1
}
Run Code Online (Sandbox Code Playgroud)
将被翻译为(由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$();
}
Run Code Online (Sandbox Code Playgroud)
class A{
val arg1=1
def myFun(arg2:Int)=arg1
}
Run Code Online (Sandbox Code Playgroud)
将被翻译为(由javap反编译字节码):
public class A extends java.lang.Object{
private final int arg1;
public int arg1();
public int myFun(int);
public A();
}
Run Code Online (Sandbox Code Playgroud)
trait A{
val arg1=1
def myFun(arg2:Int)=arg1
}
Run Code Online (Sandbox Code Playgroud)
将被翻译为(由javap反编译字节码):
public interface A{
public abstract void $line5$$read$A$_setter_$arg1_$eq(int);
public abstract int arg1();
public abstract int myFun(int);
}
Run Code Online (Sandbox Code Playgroud)
所以对于你的其他记忆问题,我认为它与Java相同.