java - Java中的非静态内部类和序列化有什么问题

标签 java performance serialization

今天早上,在尝试诊断 Web 应用程序的性能问题时,我的老板和我就此进行了长时间但最终毫无结果的讨论。我们并没有真正得出任何结论。

我认为我们认为 Serializable 非静态内部类存在问题是正确的,但我们不确定到底是什么问题或究竟要避免什么(我们推断我们不能总是 简单地避免它)。任何人都可以提出任何避免在这个问题上遇到麻烦的指导方针吗?

最佳答案

内部类持有对其外部类的引用,因此尝试序列化内部类也会序列化外部类——以及外部类可能持有的任何其他对象。这可能会导致一个巨大的对象图。或者它可能会失败,如果外部具有无法序列化的状态(例如 InputStream 对象)。

就是说,有时您必须使内部类可序列化,即使您从未打算序列化它们。例如,如果您使用 Swing。

如果您打算序列化这些对象,我会质疑为什么它们需要成为内部类而不考虑性能。通常,您只打算序列化数据容器,而此类容器很少(如果有的话)需要对某些“父”类的引用。考虑使这些对象成为嵌套(静态)类而不是内部类。

关于java - Java中的非静态内部类和序列化有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213627/

相关文章:

java - 如何反序列化具有参数化构造函数的对象

java - 将应用程序从jetty服务器迁移到wildfly 10服务器

java - 独特的随机整数生成器

performance - 加快矩阵计算

Linq 转 SQL。如何防止使用Apply运算符

ruby-on-rails - 如何序列化和反序列化邮件程序?

java - 如何验证以整数数据类型输入的非整数?

java - 一个 Android 应用程序,从图库中选择照片并上传到 firebase 数据库中

java - 优化素数计算

c - 如何将类图 AVL 树序列化到磁盘?