当前位置:  开发笔记 > 编程语言 > 正文

Java对象序列化性能提示

如何解决《Java对象序列化性能提示》经验,为你挑选了2个好方法。

我必须将一个巨大的对象树(7,000)序列化到磁盘中.最初我们将这棵树保存在一个带有Kodo的数据库中,但它会使成千上万的查询将这棵树加载到内存中,并且它将占用本地宇宙可用时间的很大一部分.

我为此尝试了序列化,实际上我获得了性能提升.但是,我觉得我可以通过编写自己的自定义序列化代码来改进这一点.我需要尽快加载这个序列化对象.

在我的机器中,序列化/反序列化这些对象大约需要15秒.从数据库加载它们大约需要40秒.

关于我可以做些什么来提高性能的任何提示,考虑到因为对象在树中,它们相互引用?



1> dogbane..:

不要忘记使用"瞬态"关键字作为不必序列化的变量.这样可以提高性能,因为您不再读取/写入不必要的数据.



2> Esko Luontol..:

一种优化是自定义类描述符,以便将类描述符存储在不同的数据库中,而在对象流中只能通过ID引用它们.这减少了序列化数据所需的空间.例如,请参阅一个项目中的SerialUtil和ClassesTable类如何执行此操作.

使类Externalizable而不是Serializable可以带来一些性能优势.缺点是它需要大量的手工工作.

然后还有其他序列化库,例如jserial,它可以提供比Java的默认序列化更好的性能.此外,如果对象图不包含循环,那么它可以更快地序列化,因为序列化程序不需要跟踪它看到的对象(请参阅jserial的FAQ中的 "它是如何工作的?" ).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有