gpt4 book ai didi

字符串[]中的Java内存使用与许多字符串

转载 作者:行者123 更新时间:2023-11-29 06:59:21 25 4
gpt4 key购买 nike

谁能从内存使用的角度告诉我,一个字符串数组 (string[]) 包含 100 个字符串或 100 个字符串哪个更好。

我想知道当内存问题很严重时什么是更好的方法。

最佳答案

这取决于您所谈论的内存类型以及您的意思 100 个字符串不在数组中。

让我们从我们可以肯定地说的开始。

  1. 如果我们假设字符串的创建方式相同,那么在这两种情况下,字符串的实际表示将占用相同数量的堆空间。

  2. 100 个字符串本身可能比具有 100 个元素的 String[] 或 100 个单独的 String 占用更多数量级的空间 变量。

区别在于我们如何保存对字符串的引用。

  • 如果它们保存在 String[] 中,数组对象将为数组元素占用 100 个堆字,加上 3 或 4 个堆字用于数组头和填充。

  • 如果它们作为对象的实例字段保存,则字段需要 100 个堆字。 (可能还有对象的 header + 填充,如果没有另外考虑的话。那将是 2 或 3 个堆字。)

  • 如果它们作为静态字段保存,则需要 100 个堆字。 (加上可能隐藏的“静态”对象的 header + 填充......如果不考虑的话。)

  • 如果它们作为局部变量保存,则不需要堆空间。相反,引用将占用 100 个字的堆栈空间。


I want to know whats the batter approach when memory issues are critical.

如您所见,总体差异很小,可能小到不显着。

而且,在实践中,您还需要考虑使用数组与使用 100 个单独变量在代码大小上的差异。这将取决于应用程序如何使用字符串。事实上,代码大小的差异很容易掩盖上述差异。

我的建议是不要理会这种思路。使用任何一种表示形式都能为您提供最具可读性和可维护性的代码。 1 或 2 个机器字的差异不太可能产生显着差异,即使您需要表示数百万个单独的字符串组也是如此。

关于字符串[]中的Java内存使用与许多字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28695339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com