Java 序列化对象的大小
我想计算本例中对象p的大小和序列化的p的大小:Java 序列化对象的大小,java,Java,我想计算本例中对象p的大小和序列化的p的大小: public class Main { static public void main(String[] args) throws IOException { Personne p1 = new Personne("name1", "username1", 25); SrzDrz sr = new SrzDrz(p1, "file1"); // Calculate size of(sr)
public class Main {
static public void main(String[] args) throws IOException {
Personne p1 = new Personne("name1", "username1", 25);
SrzDrz sr = new SrzDrz(p1, "file1");
// Calculate size of(sr) and p1 ???
}
}
班级人员是:
public class Personne implements Serializable {
static private final long serialVersionUID = 6L;
private String nom;
private String prenom;
private Integer age;
public Personne(String nom, String prenom, Integer age) {
this.nom = nom;
this.prenom = prenom;
this.age = age;
}
public String toString() {
return nom + " " + prenom + " " + age + " years";
}
}
SrzDrz类为:
public class SrzDrz {
SrzDrz(Personne p, String name) throws IOException {
FileOutputStream fos = new FileOutputStream(name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
try {
oos.writeObject(p);
oos.flush();
System.out.println(p + " serialized");
} finally {
try {
oos.close();
} finally {
fos.close();
}
}
}
}
尝试使用
File.length()
方法获取写入对象的文件的大小
如果要知道内存中对象的大小,请尝试以下操作:
尝试使用
File.length()
方法获取写入对象的文件的大小
如果要知道内存中对象的大小,请尝试以下操作:
这个怎么样?只需在ByteArrayOutputStream中写入,看看它有多大
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
stream.writeObject(p1);
stream.close();
System.out.println("Bytes = " + byteOutput.toByteArray().length);
输出
Bytes = 200
这个怎么样?只需在ByteArrayOutputStream中写入,看看它有多大
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
stream.writeObject(p1);
stream.close();
System.out.println("Bytes = " + byteOutput.toByteArray().length);
输出
Bytes = 200
再问同样的问题也无济于事,你知道。。。不,这不一样,这里我问如何计算简单对象的内存!在系列化之后的最后一个问题上!!!!!!!!!!你知道,再次问同样的问题可能不会有帮助。。。不,这不一样,这里我问如何计算简单对象的内存!在系列化之后的最后一个问题上!!!!!!!!!!可能重复的我不使用任何类型的文件!如果不使用任何jar,没有方法计算对象的内存大小?@user-您使用FileOutputStream创建文件。@user1149157-您使用的是一个文件(在FileOutputStream中)。@user-只有您自己编写,这对我来说太复杂了,无法在这里回答。我不使用任何类型的文件!如果不使用任何jar,没有方法计算对象的内存大小?@user-您使用FileOutputStream创建文件。@user1149157-您使用的是文件(在FileOutputStream中)。@user-只有您自己编写,这对我来说太复杂了,无法在这里回答。如果我理解您的程序,我不需要在文件中序列化,而是在字节输出中?是的,您可以直接序列化为字节输出,除非您有其他原因写入磁盘。好的,谢谢您的帮助:)最后一个问题:如果字节输出没有写入磁盘,它何时写入?它只存在于内存中。它是一个数组的包装器,符合FileOutputStream的相同接口,唯一的区别是当ObjectOutStream写入它时,它会写入字节数组而不是磁盘,它会根据需要调整数组大小以适应抛出的任何内容。如果我理解你的程序,我不需要在文件中序列化,而是在字节输出中?是的,您可以直接序列化为字节输出,除非您有其他原因写入磁盘。好的,谢谢您的帮助:)最后一个问题:如果字节输出没有写入磁盘,它何时写入?它只存在于内存中。它是数组的包装器,与FileOutputStream符合相同的接口,唯一的区别是当ObjectOutStream写入它时,它会写入字节数组而不是磁盘,它会根据需要调整数组的大小以适应向它抛出的任何内容。