为避免使用全局变量,我在一些函数中传递数据结构。
数据结构基本上是一个类,在Scala中有几个类型(可变)哈希映射字段。
然后我想知道这些哈希映射是否有越来越多的大型条目(哈希映射中的值可能是一些对象的集合),它会导致堆栈流还是堆内存?
我想它可能导致堆内存错误?因为具有那些散列映射文件的类是在堆上分配的对象....但是函数的参数空间在堆栈的某个帧内保持...
当然,对于任何错误,设计应该使更改的对象尽可能地“传递”以避免内存泄漏,对吗?
感谢您的任何评论或见解!
答案 0 :(得分:2)
AFAIK Java和Scala都使用引用而非实际值。
所以你传递的内容绝不是你结构的副本,而是你的结构参考的副本。
如果您使用 .Net (通常是 C#),则需要问自己这些问题,因为 .Net与本机C ++一样,支持两种语义对象存储:值和引用。