Scala集合内存占用特征

发布于 2024-11-14 00:25:51 字数 269 浏览 2 评论 0原文

有一个关于Scala 集合类的性能特征。关于内存占用是否有类似的数据?

我遇到一种情况,我担心内存的使用,并希望在选择要使用的集合时将其考虑在内。例如,在 Array[Array[T]]Vector[Vector[T]] 之间。

There is a handy page about performance characteristics of the Scala collection classes. Is there similar data on memory footprint?

I have a situation where I'm concerned about memory use and would like to factor this in my choice of collection to use. For instance, between Array[Array[T]] and Vector[Vector[T]].

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜宝宝 2024-11-21 00:25:51

以下是我通过在 2.9.0 上用 1,000,000 个对象填充这些相应的不可变序列而发现的结果。我让它们都指向同一个对象来计算内容的大小。

  • Array:1x (32 位基线 4,000,016 字节;64 位 8,000,024)
  • Vector:1.17x
  • ListQueueStack:4x
  • 计算 Stream:10x

System.gc 被调用,然后触发堆转储,然后在 Eclipse 中打开垫。

基于该 ArrayVector 是相当封闭的。

Here is what I've found out by filling up those respective immutable sequences with 1,000,000 objects on 2.9.0. I had them all point to the same object to factor out the size of the content.

  • Array: 1x (baseline 4,000,016 bytes on 32 bits; 8,000,024 on 64 bits)
  • Vector: 1.17x
  • List, Queue, Stack: 4x
  • evaluated Stream: 10x

System.gc was called then triggered heap dump then opened in Eclipse MAT.

Based on that Array and Vector are pretty closed.

追我者格杀勿论 2024-11-21 00:25:51

您可以从简单生成多个、多维向量和不同大小的数组开始:

val vMin = Vector.fill (10  , 10)(9)
val vMed = Vector.fill (1000, 10)(9)
val aMed =  Array.fill (1000, 10)(9)

10 个由 10 个值为 9 的整数数组组成的数组、1000 个这样的数组、1000 个这样的向量...

要测量大小,您可以使用

$JAVA_HOME/bin/jvisualvm 

You could start with a simple generation of multiple, multidimensional Vectors and Arrays of different size:

val vMin = Vector.fill (10  , 10)(9)
val vMed = Vector.fill (1000, 10)(9)
val aMed =  Array.fill (1000, 10)(9)

10 Arrays of 10 Arrays of Ints with Value 9, 1000 such Arrays, 1000 such Vectors ...

To measure the size, you could use

$JAVA_HOME/bin/jvisualvm 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文