在java中使类可序列化的缺点是什么

在java中使类可序列化的缺点是什么,java,memory,serialization,Java,Memory,Serialization,我想知道在java中使类可序列化的缺点 内存分配和可访问性方面的缺点 有关此主题的任何链接都会有所帮助 提前谢谢 如果您查看Java及其会话对象,就会使用纯对象序列化假设一个应用程序会话相当短,也就是说最多几个小时,那么对象序列化是简单的、受良好支持的,并且内置于会话的Java概念中但是,如果数据持久性需要较长的时间(可能是几天或几周),并且您必须担心应用程序的新版本,那么序列化很快就会变得很糟糕任何优秀的Java开发人员都知道,如果计划序列化对象,即使是在会话中,也需要一个真正的序列化ID(s

我想知道在java中使类可序列化的缺点

内存分配和可访问性方面的缺点

有关此主题的任何链接都会有所帮助

提前谢谢

如果您查看Java及其会话对象,就会使用纯对象序列化
假设一个应用程序会话相当短,也就是说最多几个小时,那么对象序列化是简单的、受良好支持的,并且内置于会话的Java概念中
但是,如果数据持久性需要较长的时间(可能是几天或几周),并且您必须担心应用程序的新版本,那么序列化很快就会变得很糟糕
任何优秀的Java开发人员都知道,如果计划序列化对象,即使是在会话中,也需要一个真正的序列化ID(serialVersionUID),而不仅仅是1L,并且需要实现可序列化接口
然而,大多数开发人员不知道Java反序列化过程背后的真正规则
如果对象已更改,而不仅仅是向对象添加简单字段,则即使序列化ID未更改,Java也可能无法正确反序列化对象
突然间,您无法再检索数据,这本身就是不好的

请访问

内存分配方面的缺点

和可及性

零。我不明白这个问题,但答案仍然是零

如果不希望序列化特定的类成员,可以始终将其设置为瞬态,这将节省与包含该成员的类连接的任何序列化开销

实现可序列化的行为本身没有任何负面影响


我不知道你所说的“安全”是什么意思,但对深度副本使用序列化确实有效。

实际上,我能想到的唯一缺点是为对象公开一个伪构造函数。 例如,如果使经典的单例可序列化,还应该引入“readResolve”方法。
除此之外,没有缺点


关于深度复制,您应该使用Clonable功能,因为它通过使用本机memcpy工作得更快。

大型对象也会显著增加应用程序的内存需求,因为对象输入/输出流缓存对写入流或从流读取的所有对象的实时引用,直到流关闭或重置。因此,这些对象的垃圾收集可能会被过度延迟。通过实现可序列化接口有4个缺点。请参阅下面的链接了解更多详细信息,我知道它会起作用;我已经用一个演示程序进行了测试;但是我担心会降低应用程序的性能,因为我使用的对象具有非常复杂的结构。。我想我必须在真正的应用程序中测试它;无论如何,再一次告诉你……谈论一个新函数的“性能下降”是毫无意义的。您没有任何东西可以与之比较。但是请注意,该引用不是来自programmers.stackexchange.com,而是来自DZone文章。关于“不仅仅是a
1L
”的部分不正确。