Java中数组在内存中的存放原理?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangyong0717/article/details/79165685
Java中数组被实现为对象,它们一般都会因为记录长度而需要额外的内存。对于一个原始数据类型的数组,一般需要24字节的头信息再加上保存值所需的内存,其中24字节的头信息分别包含以下几个部分。

 

下面分别分析一维、二维、三维的数组存储情况。

下面首先对一维数组进行分析,以int[]型数组为例,假设数组长度为N,那么需要的内存占用(24+4N)个字节,原因分析比较简单,图解示例如下:即占用内存总量=头信息内存+数组N个int值占用内存。

 

 

对于二维数组进行分析,首先对于多维数组的概念,大家可以参考这篇博客:https://www.cnblogs.com/chenyangyao/p/5222696.html

多维数组实际存储的时候就是一维数组,高维数组不断的降维转化为低维数组,例如二维数组就是一个数组的数组,即每一个一维数组里面包含一个另外一个一维数组的引用。以一个MxN的double类型的二维数组为例,其实际占用内存总量为:(8MN+32M+24) 约等于8MN。这里仍然以图示进行讲解:(这里以64位架构的计算机为例,每个对象引用地址为8位)

 

对于三维数组的分析,仍然以M x N x Q的double数组为例,与上面的分析过程类似,可以将三维数组转化成一个一维数组,该一维数组保存指向二维数组的引用。对于二维数组的分析过程则和上面的过程一样。

则占用的内存总共为:24 + 8M + M*(24 + 8N) + M*N(24 + 8Q)字节。

对于更高维的数据存储容量,可以按照相似的方法进行分析即可。
---------------------
作者:yangyongUestc
来源:CSDN
原文:https://blog.csdn.net/yangyong0717/article/details/79165685
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/weizhxa/p/11119521.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员如何面试才能拿到offer

一、概述 面试,难还是不难?取决于面试者的底蕴(气场技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试官为什么会…

php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明显,HTTP是协议,但存在其他协议,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需链接到//example.com,协议就可以在没有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记

弱监督目标检测相对于一般的目标检测任务来说&#xff0c;训练样本不需要实例级别的标注&#xff0c;只需要图片级别的标注&#xff0c;即告诉图片中有什么而不需标注位置信息&#xff0c;这种标注图片容易获取&#xff0c;能节省标注时间及精力。现有的大部分方法在进行若监督…

如何添加JWT生成的token在请求头中

前言 在我们使用JWT来做用户的验证时&#xff0c;我们登陆生成对应的token,并加入到请求的参数中发送到后台提供相关的权限校验。这个时候我们需要使用到传递请求头参数传递的问题&#xff0c;下面是两种方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK过滤

引言 作为一个Android开发人员&#xff0c;so对于我们来讲是极其常见的&#xff0c;各种大厂的SDK中都包含着各种各样的so&#xff0c;而so也是apk瘦身的重要一环&#xff0c;减少so平台的数量&#xff0c;可以极大限度的减少apk的大小。 Android 中的so 先看一张官方的图&…

java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//将计算质数个数的类封装在此类…

VMware——安装CentOS

VMware——安装CentOS 摘要&#xff1a;本文主要记录了在VMware虚拟机里安装CentOS的步骤。 下载操作系统 可以从下面的镜像地址去下载各种版本的CentOS&#xff0c;此次安装使用的版本是7.2&#xff1a; http://archive.kernel.org/centos-vault/ http://mirror.nsc.liu.se/ce…

django1.4.9 OMserverweb站点管理

1.项目setting.py配置&#xff1a; 2.项目url.py配置&#xff1a; 错误提示&#xff1a;auth_user这个表没有创建&#xff0c;那个因为,admin站点默认数据表需要迁移。执行python manage.py syncdb 会创建所有应用程序需要的数据库表4.接下来就是根据要求一步一步来&#xff1a…

matlab读取气象数据,基于MATLAB实现3种气象数据的读取和绘图

第 29卷第 4期 2007年 11月 广 东 气 象 GuangdongMeteorology Vol. 29  No. 4 November 2007 基于 MATLAB实现 3种气象数据的读取和绘图 刘  峰 , 刘  娟 , 李  萍 , 林  智 (民航中南空中交通管理局气象中心 ,广东广州  510406)   摘  要 :针对 M ICAPS、 GR IB和…

[USACO17JAN]Promotion Counting 题解

前言 巨佬说:要有线段树&#xff0c;结果蒟蒻打了一棵树状数组... 想想啊&#xff0c;奶牛都开公司当老板了&#xff0c;我还在这里码代码&#xff0c;太失败了。话说奶牛开个公司老板不应该是FarmerJohn吗&#xff1f; 题解 刚看到这道题的时候竟然没有想到深搜&#xff0c;然…

牛客小白月赛6 水题 求n!在m进制下末尾0的个数 数论

链接&#xff1a;https://www.nowcoder.com/acm/contest/135/C来源&#xff1a;牛客网 题目描述 其中&#xff0c;f(1)1;f(2)1;Z皇后的方案数&#xff1a;即在ZZ的棋盘上放置Z个皇后&#xff0c;使其互不攻击的方案数。 输入描述: 输入数据共一行&#xff0c;两个正整数x,m&am…

centos php7 apcu,centos php5.4 升级 php7

接上篇&#xff0c;edusoho需要php5.5以上版本&#xff0c;于是需要升级本地phpphp是通过yum默认安装的。以下安装参考 linkhttps://blog.csdn.net/u012569217/article/details/77506902因此先查看本地php版本php -v检查当前php的安装包yum list installed | grep php将本地php…

子类访问父类和方法覆写

子类不能直接访问父类的私有成员&#xff1b; 但是子类可以调用父类中的非私有方法来间接访问父类的私有成员。 Person类中有私有字段name,Student继承Person new Sudent().name; new Student().getName(); √ 子类拓展父类&#xff08;子类是父类的一种特殊…

面向对象笔试题练习一

1.接口只能被类实现&#xff0c;类不能继承接口&#xff0c;遵循单继承多实现原则&#xff1b; 2.静态方法中不能引用其外部的非静态成员&#xff1b; 3.实现 Runnable 接口&#xff0c;接口中有一个抽象方法 run&#xff0c;实现类中重写该方法&#xff1b; 4.public修饰的方法…

curl 升级 php,将命令行cURL转换为PHP cURL

我从来没有做过任何卷曲&#xff0c;所以需要一些帮助。我试图从例子中解决这个问题&#xff0c;但无法理解它&#xff01;我有一个curl命令&#xff0c;我可以从linux(ubuntu)命令行成功运行&#xff0c;该命令行通过api将文件放入wiki。我需要将这个curl命令合并到我正在构建…

VM-ESXI 相关常用命令(Updateing)

# ESXI计划任务路径&#xff1a;cat /var/spool/cron/crontabs/root # 获取虚拟机列表vim-cmd vmsvc/getallvms获取vm状态vim-cmd vmsvc/power.getstat [vmid]关闭虚机vim-cmd vmsvc/power.shutdown [vmid]vim-cmd vmsvc/power.off [vmid] # 强制关闭长期脚本存放路径 vi /etc/…

sql server中的go

1. 作用:向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.2. 语法:一批 Transact-SQL 语句GO如Select 1Select 2Select 3GO3. 说明:1) GO 不是 Transact-SQL 语句&#xff1b;2) 它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的…

java 图片缓存工具,java缓存读取图片解决方案

java缓存读取图片老师布置了任务&#xff0c;需要把数据库中的图片一缓存的形式读出&#xff0c;不要说什么数据库中路劲&#xff0c;图片整体较大&#xff0c;在给别人使用时不现实。关键代码&#xff1a;for(int i0;i<1;i){downloadDB(bi);pm[i]new paintimage(bi);}publi…

杭电Acm刷题顺序

第一阶段&#xff1a;开始入门吧&#xff01;&#xff08;15天&#xff0c;53题&#xff09; 一&#xff0e;输入输出练习&#xff08;2天&#xff0c;10题&#xff09; 1000、1089—1096、1001 二&#xff0e;简单操作&#xff1a;&#xff08;2—4天&#xff0c;12题&…

[Vue CLI 3] 源码系列之useTaobaoRegistry

通过下列方式可以安装最新版本的 Vue CLI&#xff08;注释&#xff1a;sudo 自行选择&#xff09; sudo npm install -g vue/cli然后通过下列命令创建项目&#xff1a; vue create demo这时候&#xff0c;会询问你是否使用 taobao 的 registry Your connection to the default …