java中怎么判断arraylist占用的内存空间大小

 我来答
小傻

推荐于2017-09-21 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
ArrayList就是动态数组,也是一个对象。
创建一个ArrayList对象,该对象存放在堆内存中,且是一个内存连续的内存区域。
1、ArrayList是用数组实现的,这个数组的内存是连续的,不存在相邻元素之间还隔着其他内存。
2、索引ArrayList时,速度比原生数组慢是因为你要用get方法,这是一个函数调用,而数组直接用[ ]访问,相当于直接操作内存地址,速度当然比函数调用快。
3、新建ArrayList的时候,JVM为其分配一个默认或指定大小的连续内存区域(封装为数组)。
4、每次增加元素会检查容量,不足则创建新的连续内存区域(大小等于初始大小+步长),也用数组形式封装,并将原来的内存区域数据复制到新的内存区域,然后再用ArrayList中引用原来封装的数组对象的引用变量引用到新的数组对象:
elementData = Arrays.copyOf(elementData, newCapacity);
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
arache
推荐于2017-09-29 · TA获得超过212个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:170万
展开全部
你想在代码里判断是做不到的。
只能自己计算。先算出list里面每个object的大小(char=1,int=4等等),然后*arraylist.size()。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HEAT炼火
2014-02-14
知道答主
回答量:12
采纳率:0%
帮助的人:4万
展开全部
应该就是arraylist.length*size();
size()就是返回arraylist中存储对象的占用内存大小
参考
http://blog.csdn.net/hoszb/article/details/5846069
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友42ccef7
2018-08-08 · 超过90用户采纳过TA的回答
知道答主
回答量:342
采纳率:24%
帮助的人:98.9万
展开全部
楼主非要看的话,只有一招了。利用反射获取数组的大小。

import java.lang.reflect.*;
import java.util.*;

public class Test{
public static void main(String[] args) throws Exception {
ArrayList list = new ArrayList();
Field f = ArrayList.class.getDeclaredField("elementData");
f.setAccessible(true);
Object[] elementData = (Object[])f.get(list);
System.out.println(elementData.length);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
栗为亢旺
2019-05-10 · TA获得超过1055个赞
知道小有建树答主
回答量:1776
采纳率:100%
帮助的人:9.2万
展开全部
成员函数也是函数,函数都是有地址的,所以函数是占用内存空间的,但函数由于是多对象共享的,所以函数不占用对象的内存地址,是放在代码段的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式