「java空类大小」java空类的大小

博主:adminadmin 2022-11-23 02:56:06 59

今天给各位分享java空类大小的知识,其中也会对java空类的大小进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

一个Java对象到底占用多大内存

Object o=new Object():

在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.

举个例子:

Class O{

int i;

byte j;

String s;

}

其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.

当然,如果类里有其他对象的话,也要把其他对象的空间算进去

java中怎么算一个对象的空间大小

Object流

直接将Object写入或读出

也叫做对象的序列化:把一个Object直接转换成字节流写到硬盘上,或者直接写到网络上去

这里有一个类T:

class T implements Serializable { // 注意,必须要实现Serializable接口,才是可序列化的

int i = 10;

int j = 9;

double d = 2.3;

int k = 15;

}

这个类里面的成员变量3个int,1个double,int是4字节,double是8字节

所以对象的大小绝对不会小于20字节,但是T肯定是从Object类继承,那么继承下来这些内容也

占空间,比如方法什么的,所以肯定要大于20字节了

运行下面这个类:

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

public class Test {

public static void main(String[] args) {

T t = new T();

try {

FileOutputStream fos = new FileOutputStream("d:/abc.txt");

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(t);

oos.flush();

oos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

直接将T对象通过Object流写到了D盘的名为abc.txt的文件里面

一个空文本文件是0字节,找到这个文件以后查看它的属性,我这里是67 字节,

那么这个对象就是67 字节

现在在T类中添加一些其他内容,那么再次输出,字节数肯定就比原来大了,它就是把整个对象转换成

字节,写入了文件,这个应该算是比较好的方式了,但是我们无法特别精确的知道对象中哪些内容各自

占用多少空间,因为那是Java虚拟机的事了,我学的没那么深入,水平有限

当然,把一个对象写进去,也可以读出来:

FileInputStream fis = new FileInputStream("");

ObjectInputStream ois = new ObjectInputStream(fis);

// 当成Object读出来的,强转成T类型

T tReaded = (T)ois.readObject();

System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);

发现打印出的成员变量的值,还是存进去这个对象的值

JAVA中一个空类占多大内存

是指一个空对象吗?只是new出来了,没有初始化属性那种?可以通过ObjectOutputStream把该对象写入一个文件或者写入一个ByteArrayOutputStream,然后看对应文件或ByteArray的大小。

如何查看java一个类的大小

类的各种信息的实例化后都是放置在JVM中的,这个可以通过Jconsole或者viualvm进行查看,方法就是先运行你的程序然后 使用如上工具监控你程序所在的线程,然后查看关联对象所占的空间, 不过一般情况下不可能直接看出来的,因为你的了可能引用了string 对象然而string对象可能被很多对象引用,这样这块的空间是不记录在 你的对象中的,一般情况查看对象大小主要是担心 内存溢出,这个一般你看对象在空间的占比就是数量,以及对象数是否一直在增加 如果一直在增加说明这个对象有问题可能存在内存溢出的风险,比如你查询一个很大的表放置在list中这种情况就可能存在内存溢出,不妨试一下看看查询以后 内存是如何变化的。

java空类大小的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java空类的大小、java空类大小的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。