为了避免使用全局变量,我在一些函数中传递数据结构。
数据结构基本上是一个类,在scala中有几个类型(可变)hash map的字段。
然后我想知道这些散列Map是否有越来越多的大条目(散列Map中的值可能是一组对象),它会导致堆栈溢出还是堆内存不足?
我想它可能会导致堆外内存错误?因为拥有这些哈希Map文件的类是(are)对象,这些对象在堆上分配….但是函数参数的空间保持在堆栈的某个帧中。。。
当然,对于任何错误,设计都应该使传递的变化对象尽可能“小”,以避免内存泄漏,对吗?
感谢您的任何意见或见解!
1条答案
按热度按时间nbnkbykc1#
afaikjava和scala都使用引用而不是实际值。
因此,您传递的内容绝不是结构的副本,而是对结构的引用的副本。
如果使用.net(通常是c++),您需要问自己这些问题,因为.net与本机c++一样,支持两种对象存储语义:值和引用。