0 0

一个包含10*10 int型数组的对象占用内存大小怎么计算?5

public class Main {

    private int[][] a = new int[10][10];
    
}

网上有个算法是这样:算出来是616
[url]http://www.javamex.com/tutorials/memory/array_memory_usage.shtml
[/url]
For example, let's consider a 10x10 int array. Firstly, the "outer" array has its 12-byte object header followed by space for the 10 elements. Those elements are object references to the 10 arrays making up the rows. That comes to 12+4*10=52 bytes, which must then be rounded up to the next multiple of 8, giving 56. Then, each of the 10 rows has its own 12-byte object header, 4*10=40 bytes for the actual row of ints, and again, 4 bytes of padding to bring the total for that row to a multiple of 8. So in total, that gives 11*56=616 bytes. That's a bit bigger than if you'd just counted on 10*10*4=400 bytes for the hundred "raw" ints themselves.

使用classmexer.jar提供的MemoryUtil.deepMemoryUsageOf(user);算出来的是632,但是如果是616加上User 对象Header的话(8bytes)也只是624啊,求解释
2012年11月26日 17:37
目前还没有答案

相关推荐

    Java 对象(数组)占多大空间(几个字节) 手把手做实验

    数组的内存占用除了包含对象头之外,还包括数组长度(4字节)和数组元素。实验中,`new Long[5]`占用40字节,这包括对象头(12字节),数组长度(4字节),以及5个Long元素(每个8字节,总计40字节)。`new long[5]...

    测试java对象占用内存大小的例子

    在Java编程语言中,了解一个对象占用的内存大小是非常重要的,尤其是在优化性能或者处理大量对象时。本示例主要探讨如何测试Java对象占用的内存大小,以便更好地理解内存使用情况。 首先,`SizeOf.java`可能是一个...

    计算一个Java对象占用字节数的方法

    在Java编程语言中,了解一个对象占用的内存字节数对于优化内存使用和理解程序性能至关重要。本篇文章将深入探讨如何计算Java对象占用的内存字节数,以及影响这一数值的因素。 首先,Java对象在堆内存中由四个部分...

    C#中动态声明与使用对象数组实例

    当一个对象不再被引用时,GC会自动回收其占用的空间。然而,为了优化性能,开发者可以使用`using`语句或显式调用`Dispose()`方法来及时释放非托管资源(如文件句柄或数据库连接)。 在提供的示例项目中,可能包含了...

    计算对象占用内存空间ObjectSize-master.zip

    "计算对象占用内存空间ObjectSize-master.zip" 提供的工具可能是一个帮助开发者分析和估算对象在内存中占用大小的解决方案。这样的工具对于调试、性能调优以及避免内存泄漏至关重要。 在Java中,对象的内存占用不...

    环形数组(介绍、配置、使用步骤、环形数组对象、API).pdf

    环形数组的一个重要特性是其对动态内存的支持。默认情况下,`ringbuf`库使用C语言的标准内存管理函数`malloc`和`free`来分配和释放内存。当然,用户可以根据需求自定义内存分配函数,只需要在`ringbuf.h`头文件中...

    Java数组练习题.docx

    因为数组通常占用较大内存,栈内存不足以存放大对象。 4. **二分查找**:二分查找法适用于已排序的数组,可以快速定位目标元素。 5. **下标数据类型**:数组下标的类型是整型,只能是int类型的数值。 6. **数组...

    Java数组练习题(带答案).doc

    这是因为数组可能包含大量的元素,占用较大空间,而栈内存通常较小,适合存储基本类型和对象引用。 4. **二分查找**:二分查找法适用于已排序的数组,通过不断缩小搜索范围快速找到目标元素。 5. **下标类型**:...

    Java占用内存的研究.pdf

    一个空的String对象占用28个字节的内存,包含了一个指向字符数组的引用、一个偏移量、一个字符的长度和一个哈希码。当字符串内容非空时,内存占用会增加,因为需要存储字符数据。例如,字符串"ab"会占用28 + 2 * 2 =...

    C++Builder动态对象数组

    需要包含`<vector>`头文件,声明一个`std::vector*>`类型的变量: ```cpp std::vector*> HillVector; ``` - **添加元素** 可以使用`push_back`方法添加元素: ```cpp HillVector.push_back(new TImage...

    matlab开发-大数据集的简单内存映射数组

    1. **定义数组大小**:确定你要映射的数据文件的大小,这决定了内存映射数组的维度和大小。在MATLAB中,你可以使用`memmapfile`函数来创建内存映射文件对象。 2. **选择数据类型**:你需要指定数组的数据类型,例如...

    C++-实现可变长的数组.pdf

    - **重载赋值运算符**:用于将一个数组对象的值赋给另一个数组对象。 - **重载下标运算符**:用于通过索引访问数组元素。 - **`push_back`函数**:用于在数组末尾添加新元素。 - **`length`函数**:用于获取当前数组...

    numpy - numpy tutorial

    NumPy是Numerical Python的缩写,它是一个Python库,包含多维数组对象以及一系列处理这些数组的例程。使用NumPy可以执行数学和逻辑运算操作。本教程将介绍NumPy的基础知识,包括其架构、环境、各种数组函数和索引...

    Java数组与字符串PPT教案学习.pptx

    - 可以通过重新赋值给同一个引用变量来改变数组的大小,但实际上是创建了一个新的数组。 6. **多维数组** - 多维数组中最常见的是二维数组,可以理解为表格形式,通常用于处理矩阵或表格数据。 - 二维数组可以通过...

    C++数组与指针深入剖析

    例如,声明一个包含10个整数的数组`int arr[10];`。数组中的每个元素都可以通过下标访问,如`arr[0]`表示第一个元素,`arr[9]`表示最后一个元素。 数组的一个重要特性是数组名实际上是指向数组第一个元素的指针。这...

    C++ 类的深拷贝

    析构函数在对象生命周期结束时自动调用,用于释放对象占用的资源,例如动态分配的内存。 **知识点2:析构函数的实现** 在 `Vect` 类中,析构函数实现了对动态分配的整型数组的释放: ```cpp ~Vect() { delete[] ...

    2021-2022计算机二级等级考试试题及答案No.16885.docx

    - **数组定义:** 定义数组时必须指定数组的大小,例如 `int a[10];`。 - **数组初始化:** 可以在定义数组时初始化数组元素,如 `int b[5] = {1, 2, 3};`。 - **数组索引:** 数组元素可以通过索引来访问,索引从 0...

Global site tag (gtag.js) - Google Analytics