当前位置: 首页 > 知识库问答 >
问题:

数组索引是否会影响性能/内存使用(如果它们没有值)

尉迟宇定
2023-03-14

我是Java新手,最近我一直想知道巨大但部分为空的数组的内存消耗,就像下面的例子:

> < li >我需要未知大小的数组-它可以是300k的值,也可以是300m的值,但要记住,它最好只保存50个值, < li>

我正在初始化大小为

int values[] = new int[Integer.MAX_VALUE];

用户每次使用给定的生成方法时都会生成一些必须存储在数组中的值

使用过大的数组有什么禁忌症吗?在性能方面,数组的大小有何重要,例如,当仅使用该阵列的 0,1% 与 100% 的阵列使用相比?

换句话说——当我调用X int值的空数组时,初始化时的JVM会为X*(用于存储1 int值的内存)保留内存吗,即使还没有存储任何值?

谢谢,丹尼尔。

共有2个答案

仇经武
2023-03-14

初始化数组时,要在内存中为它保留一个位置。该内存大小不会因数组中的值而改变。int array的默认值是0,所以你的数组不是部分空的。

仲孙文乐
2023-03-14

在性能方面,数组的大小有何重要,例如,当仅使用该阵列的 0,1% 与 100% 的阵列使用相比?

没有“X int值的空数组”这种东西。每个元素都有一个值——默认情况下只是0。每个元素都需要4个字节,而不管它的值如何。您的new int[Integer.MAX_VALUE]数组将占用8GB内存。

如果您想创建一个稀疏数组,您可能需要考虑使用Map。但是,请注意,虽然您可以有一个int数组,但map需要一个整数类型的值-如果您超出了缓存的整数值的范围(并且如果您有很多不同的值),您最终可能会在整数对象(以及对它们的引用)上浪费大量空间。

 类似资料:
  • 问题内容: varchar列上的索引是否会使查询运行缓慢?我可以将其设为int。而且我不需要做LIKE%比较。 问题答案: varchar列上的索引是否会使查询运行缓慢? 不,不是的。 如果优化器决定使用索引,则查询将运行得更快。 该表上的s / s / s会变慢,但不太可能引起注意。 我不需要做LIKE%比较 请注意,使用: …将 不 使用索引,但以下内容将: 关键是在字符串的左侧使用通配符,这

  • 使用时,是否有需要考虑的性能影响? 我正在编写一个从目录检索文件的查询,这就是查询: 那么,在决定进行这样的转换时,是否应该考虑某种性能影响--还是只在处理大量文件时才考虑?这是一个可以忽略不计的转换吗?

  • 问题内容: 亚马逊称该 加密和解密是透明处理的,因此您无需修改​​应用程序即可访问数据 我的应用程序(Rails,MySQL,Elasticsearch)构建了大量图形,因此查询了许多数据。根据我以前对数据库加密的经验,它确实会影响数据的检索速度(因为我们只能说记录在读取和解密后是否符合条件)。 有没有相关的基准?或者,也许您曾经使用过AWS的这种服务器端加密?我是否完全需要担心性能变化? 对我来

  • 问题内容: 我正在对ElasticSearch的单节点集群进行一些基准测试。 我面对这样的情况,更多的分片将至少在单个节点中降低索引性能(延迟和吞吐量) 这些是我的一些数字: 使用1个分片进行索引,每分钟索引+ 6K文档 索引5个分片,每分钟索引+ 3K文档 索引20个分片,每分钟索引+ 1K文档 使用批量API的结果相同。所以我想知道这是什么关系,为什么会这样呢? 注意:我没有资源问题!资源是免

  • 问题内容: 因此,请考虑以下表格: 桌子: id(整数,主键) 11 c2 c3 c4 c5 假设我使用的查询在运行时有所不同(例如,一个网站,其中的复选框表示是否要在特定字段上进行搜索),一些可能的实例是: (使用一些值) 问题: 索引的作用是什么?在几个查询中将如何使用它? 在此表上创建最佳索引是什么? 问题答案: MySQL文档做了解释多列索引是如何工作的一个很好的工作在这里。 通常,当索引

  • 本文向大家介绍使用匿名函数会影响性能吗?,包括了使用匿名函数会影响性能吗?的使用技巧和注意事项,需要的朋友参考一下 从某种意义上说,使用匿名函数会影响性能,您需要在每次迭代时创建一个新的函数对象。匿名函数始终使用变量名加载。顾名思义,匿名允许创建没有任何名称标识符的函数。它可以用作其他函数的参数。使用变量名调用它们- 示例 这就是可以使用JavaScript匿名函数的方式- 这是一个例子-