当前位置: 首页 > 面试题库 >

Java中ArrayList的内存大小是多少

臧烨烁
2023-03-14
问题内容

我有一个ArrayList<Obj>,我想知道它正在使用多少内存。

Obj是变体是这样,它不是那么容易,因为乘法每一个对象的大小的数组中的元素数目。


问题答案:

您可以使用诸如此类的对象Runtime.getRuntime().totalMemory()及其对应对象Runtime.getRuntime().freeMemory()来进行有根据的猜测,但这并不考虑两次调用之间通过GC处理的对象。



 类似资料:
  • 我有一个JVM进程,最大1024 MB堆大小的核心转储。(OpenJDK 7 on linux) 当我使用YourkitJavaProfiler 10.0.6分析核心转储文件时,我发现进程仅在内存不足时使用803 MB堆。 似乎两个幸存者堆使用了堆的2/9(或保留)。 我在Windows7上用JDK7进行了测试,jvisualvm(带有Visual GC插件)显示一个幸存者的大小是伊甸园大小的1/

  • 问题内容: 我听过关于Java程序中一个字节占用的内存量的意见不一。 我知道您在一个Java字节中最多可以存储+127,并且文档说一个字节只有8位,但是在这里我被告知实际上它占用的内存量与int相同,因此仅一种有助于代码理解而不是效率的类型。 谁能解决这个问题,这将是实现特定的问题吗? 问题答案: 好的,已经进行了很多讨论,而没有很多代码:) 这是一个快速基准测试。谈到这种事情,通常会有一些警告-

  • 问题内容: 众所周知,java使用以下数据类型 如果我创建一个像 现在的问题是大小尺寸是。请以适当的理由给我澄清。 谢谢, Anil Kumar C 问题答案: 对象的内存大小取决于体系结构,主要取决于VM是32位还是64位。实际的VM实施也很重要。 对于每个对象,您需要为其对象标头(在64位VM上通常为2 * 8字节),其字段(根据VM的实现需要额外的对齐空间)的空间。然后将最后的空间四舍五入到

  • 我在看http://cs231n.github.io/convolutional-networks/ 我不明白为什么第2层(CONV3-64:[224x224x64])的内存大小是224x224x64 我理解有64个3x3大小的过滤器,但为什么输入大小乘以64? 为什么层(CONV3-128)中的权重数是(3x3x64)x128而不是(3x3x64x64)x128?(前一层的权重乘以新的128个过

  • 问题内容: 你可以通过执行以下操作来设置ArrayList的初始大小: 但是,你做不到 因为它会导致超出范围的异常。 如果无法访问分配的空间,设置初始大小有什么用? add函数的定义是,所以我不添加索引10。 问题答案: 你将数组列表的大小与其容量混淆了: 的大小是在列表中的元素的数目; 的容量是多少元素列表可以潜在地容纳而不重新分配其内部结构。 呼叫时,你是在设置列表的初始容量,而不是列表的大小

  • 问题内容: 我只是尝试了内存中python数据结构的大小。我写了以下代码片段: 我在以下配置上测试了代码: Windows 7 64位,Python3.1:输出为:所以lst1有52个字节,lst2有40个字节。 使用Python3.2的Ubuntu 11.4 32bit:输出为 Ubuntu 11.4 32位Python2.7: 谁能向我解释为什么两个大小都不同,尽管它们都是包含1的列表? 在g