【发布时间】:2015-12-18 06:44:20
【问题描述】:
我们知道,与 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 中的所有内容都是一个对象,那么内存分配将如何进行呢?
- 除了引用变量之外,所有东西都会在堆中获取内存吗?
- 在 java 中,当创建类实例时,该类中的方法和变量会在堆中获取内存。这里的单例对象是如何发生的?
- 如果一切都在Heap中,会不会影响性能?
- 与 Java 一样,内存分为 5 个部分,即 Heap、Stack、MethodArea 等。那么在 scala 中,内存分配是如何进行的?
【问题讨论】:
-
所以您的问题或多或少是:内存管理如何大规模工作?
-
类型是统一的,但这并不意味着在运行时“一切都是对象”。
-
如果 Scala 类具有分配给文字的 val ,似乎还有优化空间。你会认为带有文字赋值的 val 可以在 Java 领域转换为静态 final,因为在任何类实例化中值永远不会改变
标签: java scala memory memory-management allocation