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

Java 在函数参数中维护大型数据结构(对象)?,java,scala,Java,Scala,为了避免使用全局变量,我在一些函数中传递数据结构 数据结构基本上是一个类,在Scala中有几个类型为(可变)哈希映射的字段 然后我想知道这些散列映射是否有越来越多的大条目(散列映射中的值可能是一些对象的集合),这会导致堆栈溢出还是堆内存不足 我想这可能会导致堆外内存错误?由于具有这些散列映射文件的类是(是)对象,它们在堆上分配…但是函数参数的空间保持在堆栈上的某个帧内 当然,对于任何错误,设计都应该使传递的变化对象尽可能“小”,以避免内存泄漏,对吗 感谢您的评论或见解 AFAIK Java和Sc

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

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

然后我想知道这些散列映射是否有越来越多的大条目(散列映射中的值可能是一些对象的集合),这会导致堆栈溢出还是堆内存不足

我想这可能会导致堆外内存错误?由于具有这些散列映射文件的类是(是)对象,它们在堆上分配…但是函数参数的空间保持在堆栈上的某个帧内

当然,对于任何错误,设计都应该使传递的变化对象尽可能“小”,以避免内存泄漏,对吗


感谢您的评论或见解

AFAIK Java和Scala都使用引用而不是实际的

因此,您传递的不是您的结构的副本,而是对您的结构的引用的副本


如果你使用<强> .NET/Stand >,通常需要“强”> C>/St>,因为 NET,类似于本机C++,支持对象存储的两个语义:值和引用< /St>>/P>你有实际的性能问题,还是只是在闲逛?(更重要的是:当您不真正了解JVM中对象的表示和传递的基本原理时,为什么还要担心高度特定的错误情况,如堆栈溢出或堆耗尽?)@millimoose以前遇到过这两种错误,现在“漫无目的地推测”到基本问题。基本问题与错误无关。你会得到堆栈溢出,因为你有一个导致无限递归的错误。你会得到内存不足错误,因为你有一个内存泄漏或正在处理巨大的数据集。将对象以正确的代码传递给方法不会导致这两种情况,除非在极少数情况下不会虽然想了解JVM在这个级别上是如何工作的还可以,但堆栈溢出不是一个教学网站。我认为“向我解释这个基本概念”这种形式的问题是不合适的。不,.NET中的结构既不常见,也没有那么大,你需要考虑这个问题。