是否存在高效的Scala多维数组,如Java中的?高效的多维度可变的Scala数组
我试图解决Hackerrank严格的内存限制:256MB的问题。我的解决方案与内存不足的错误中断,同时创造2D阵列(39384,39384)元素:
Array.ofDim[Long](39384,39384)
在阶控制台同样的情况。
java.lang.OutOfMemoryError: Java heap space
at scala.reflect.ManifestFactory$$anon$9.newArray(Manifest.scala:115)
at scala.reflect.ManifestFactory$$anon$9.newArray(Manifest.scala:113)
at scala.Array$.ofDim(Array.scala:222)
at Solution$.solve(Solution.scala:4)
at Solution$$anonfun$main$1.apply$mcVI$sp(Solution.scala:41)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160)
at Solution$.main(Solution.scala:37)
at Solution.main(Solution.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at scala.reflect.internal.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:68)
at scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:99)
at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:68)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:99)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:72)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:94)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
您的多维数组会变得稀疏吗?如果没有,那么就没有办法让你的多暗数组“更高效”,因为所有这些值都需要被存储。您可以使用内存映射文件,或者如果您的机器具有内存,则可以在启动时扩展JVM的最大内存。 –