java怎么获取一个对象所占的内存?类似于c的sizeof

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么获取一个对象所占的内存?类似于c的sizeof相关的知识,希望对你有一定的参考价值。

不是基本类型,不是字符串,是任意类的对象所占的内存空间大小,就像c的sizeof(struct ***)一样

参考技术A 没有,你的自己去写方法。string.getbyte();这个些方法可以帮你计算占用空间问题。
其他的数据类型我们都知道他们所占的大小比如int
4个自己char
1个字节等。
参考技术B 这个真没有直接的方法获取到某个对象所占的内存

java中如何关闭一个窗口就完全释放它所占的资源但不终止整个程序(程序由多个窗口)

在你定义的关闭窗口事件中写上
窗口名.dispose();
如果是直接继承的窗口类,可以用this.dispose()
这个就是释放当前窗口资源而不终止程序 ,与serVisible(false)是不一样的
参考技术A 根据Java的垃圾回收机制:垃圾回收回收的是无任何引用的对象占据的内存空间
所以你只要采用匿名类创建打开的窗口并调用System.gc() 或Runtime.getRuntime().gc() 就可以啦
在要创建窗口的地方这样写:
new frame().setVisible(true);
System.gc() ;
当你再次打开同样的窗口时,又会执行new frame().setVisible();重新创建一个新的窗口,原来的自然就变成无任何引用的对象了,随即就会被JVM垃圾回收机制回收掉了

注意:调用System.gc()用于显式通知JVM可以进行一次垃圾回收,但真正垃圾回收机制具体在什么时间点开始发生动作是不可预料的本回答被提问者采纳
参考技术B 不终止程序是不可能的,程序再运行就需要占用资源。你只能在适当的时候关闭IO、关闭数据库连接、告诉GC该运行了,还可以自己释放一些可能导致内存溢出的东西。其他的你操纵不了

以上是关于java怎么获取一个对象所占的内存?类似于c的sizeof的主要内容,如果未能解决你的问题,请参考以下文章

C#如何得到一个Image对象所占的字节数?

Java我可以主动去释放对象占的内存吗?可以的怎释放?

如何计算Java对象所占内存的大小

C语言中计算数组长度的方法是啥

Java中关于“=”和“==”的分析

C++类对象所占的内存空间