在函数参数中维护大型数据结构(对象)?

时间:2013-06-05 22:23:03

标签: java scala

为避免使用全局变量,我在一些函数中传递数据结构。

数据结构基本上是一个类,在Scala中有几个类型(可变)哈希映射字段。

然后我想知道这些哈希映射是否有越来越多的大型条目(哈希映射中的值可能是一些对象的集合),它会导致堆栈流还是堆内存?

我想它可能导致堆内存错误?因为具有那些散列映射文件的类是在堆上分配的对象....但是函数的参数空间在堆栈的某个帧内保持...

当然,对于任何错误,设计应该使更改的对象尽可能地“传递”以避免内存泄漏,对吗?

感谢您的任何评论或见解!

1 个答案:

答案 0 :(得分:2)

AFAIK Java和Scala都使用引用而非实际

所以你传递的内容绝不是你结构的副本,而是你的结构参考的副本

如果您使用 .Net (通常是 C#),则需要问自己这些问题,因为 .Net与本机C ++一样,支持两种语义对象存储:值和引用