我需要在一个文件中存储数千个对象状态,在一个时间周期结束时,并在每个新周期开始时将它们恢复到主存储器中。
所以到目前为止我有两种方法可以考虑:
例如直接将这些对象存储为
class UsingClassObjects {
private String name;
private int age;
private long rollNo;
private long credits;
}
或创建一个hashMap以将状态存储为:
class UsingHashMap{
HashMap<Integer, HashMap<String, HashMap<Long, Long>>> data = new HashMap<Integer, HashMap<String, HashMap<Long, Long>>>();
}
那么这两种方法中哪一种更好的记忆和效率呢?为什么呢?
还有更好的方法吗?
如果我使用HashMap,那么序列化对象会影响性能而不是将状态写入纯文本文件吗?答案 0 :(得分:0)
序列化对象并在File中存储比HashMap方法好得多,因为它可能是浪费。如果POJO不复杂,那么序列化/反序列化它也是微不足道的。您也可以使用数据库,这可能会有所帮助。你也可以像REDIS一样使用Cache。
答案 1 :(得分:0)
将状态存储在HashMap中不是一个好选择,因为: 1.最后它是一个对象,如果你的服务器崩溃或者你停止了JVM,它就会死掉。
如果您在HashMap中存储1000个对象,这将增加内存并且有可能出现Out of Memory问题。
HashMap将为其中的每个条目对象消耗大量内存。
因此我建议使用Java Serialization来存储一个对象的状态,即使JVM关闭也会保留状态。