在Java中如何知道一个对象的大小,也就是占用多少内存???

Alex_20 2003-08-19 12:49:42
在Java中如何知道一个对象的大小,也就是占用多少内存???
...全文
949 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwd 2003-08-19
  • 打赏
  • 举报
回复
在Java中不需要考虑内存管理问题,它是自动进行的
xjffj 2003-08-19
  • 打赏
  • 举报
回复
首先不同虚拟机的对象大小不同。以sun的jvm为例
每个对象8个字节,field的大小参考sun规范。每个对象的总大小必须是8的倍数。所以一个Integer的大小是8+4=12个字节,但由于是8的倍数,因此实际是16个字节。
一个字符串"aaa"的大小是8+4(hascode)+4(char数组的引用)+char数组对象大小
char数组对象大小是8+4+2*3=24
因此一共是40个字节。当然如果String中还有其他Field则还要加上。
tenny 2003-08-19
  • 打赏
  • 举报
回复
搞个什么例子来探讨一下.光讲理论不怎么好讲呀/
hogcheng 2003-08-19
  • 打赏
  • 举报
回复
关注.........
Alex_20 2003-08-19
  • 打赏
  • 举报
回复
我要缓冲数据,数据的行数和列数都是不确定的,而且里面全是字符串,我希望不缓冲对象尺寸大于某个整数的那些数据,该怎么办???
dingzhaofeng 2003-08-19
  • 打赏
  • 举报
回复
路过...
shine333 2003-08-19
  • 打赏
  • 举报
回复
什么东西的缓冲池阿,

我感觉好像只要考虑对象个数,而不要考虑其占内存大小的
hesi726 2003-08-19
  • 打赏
  • 举报
回复
知道你是这个目的啊!
所以对于 对象来说,
例如,下面的对象吧!
public class Aa
{
int i;
String abc = " abc ";
Object aa = null;

void setI(int i)
{ this.i=i; }

int getSize()
{
return 4+abc.length()+4;
// 第一个 4 表示 整数所占的字节
// 第二个 4 表示 aa 所占的字节!(指针占 4个字节)
}
}
//就是这样啊!
//你不能认为 getSize(),setI() 这些函数也会占内存啊!---虽然确实会占!
Alex_20 2003-08-19
  • 打赏
  • 举报
回复
我要设计一个缓冲池,池总要有大小吧,不知道对象占用了多少内存,怎么知道池是否满了???
xdcy2001 2003-08-19
  • 打赏
  • 举报
回复
java中的对象会自动回收,不需要象C那样要用析构函数,所以不需要知道它占多大内存。
conning333 2003-08-19
  • 打赏
  • 举报
回复
哦?支持
zhang21cnboy 2003-08-19
  • 打赏
  • 举报
回复
hoho,欧努力了3天,刚实现!:)等我发出来大家看!
hesi726 2003-08-19
  • 打赏
  • 举报
回复
没有办法!
只能自己实现方法了!
基本上,
函数是不占内存的!---多个对象都只有一个函数!
其他嘛, int,string,Object 等都可以得到所占字节数啊!
看看 jive 论坛(忘记了是不是这个了),里面有实现的!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧