java:普通数组和对象数组都是连续的内存空间吗?
那如果我每个对象数组中没存对象、存的都是null的话这段连续空间我没用到但是也是占用内存的是吗?和我数组中存没存东西或者存的东西没关系吗?申请多大的就占用多大的吗?...
那如果我每个对象数组中没存对象、存的都是null的话 这段连续空间我没用到 但是也是占用内存的是吗?
和我数组中存没存东西或者存的东西没关系吗?申请多大的就占用多大的吗? 展开
和我数组中存没存东西或者存的东西没关系吗?申请多大的就占用多大的吗? 展开
展开全部
不管是null还是undefined,都会占空间,这个空间应该就是指向null和undefined地址的指针,看起来是1个字节。除非delete它! 想经常报的空指针异常就是 到内存查到了null的对象......
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要定义了就占内容空间,占用空间的大小取决于你定义数组的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每个对象数组中没存对象、存的都是null的话 只占用一字节空间
只有在new一个对象时 内存空间才开辟出来
只有在new一个对象时 内存空间才开辟出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从语法定义上看,java数组对象相当于C语言中类似定义一个指针类型数组。
java基础类型和对象类型的空内存消耗情况在java1.4,1.5,1.6,1.7中都不同。
这个不同时根据计算机硬件发展做出的权衡,一般就是空间和速度之间的权衡。
不管怎么样,对于纯java开发人员来说,其实不需要关心java数组内存是不是连续的,因为java是一个抽象级VM,是不是连续的是由VM来决定的,对于开发人员只需要理解java给你提供的开发接口和性能参考就行了,可以肯定是是数组下标访问的速度肯定非常快。
从JNI角度看java数组对象,与C语言通信时jni接口接收的数组类型是连续内存的。
如果非要深究到底怎么实现的,需要看vm源代码,目前开放的open jdk可以作为参考,有兴趣可以去研究一下。
java基础类型和对象类型的空内存消耗情况在java1.4,1.5,1.6,1.7中都不同。
这个不同时根据计算机硬件发展做出的权衡,一般就是空间和速度之间的权衡。
不管怎么样,对于纯java开发人员来说,其实不需要关心java数组内存是不是连续的,因为java是一个抽象级VM,是不是连续的是由VM来决定的,对于开发人员只需要理解java给你提供的开发接口和性能参考就行了,可以肯定是是数组下标访问的速度肯定非常快。
从JNI角度看java数组对象,与C语言通信时jni接口接收的数组类型是连续内存的。
如果非要深究到底怎么实现的,需要看vm源代码,目前开放的open jdk可以作为参考,有兴趣可以去研究一下。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询