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

试图将java对象存储在连续的内存中

如何解决《试图将java对象存储在连续的内存中》经验,为你挑选了2个好方法。

我正在尝试实现类似缓存的对象集合.目的是通过内存中的位置快速访问这些对象,因为我可能一次只能读取多个对象.我目前只是将对象存储在像vector或deque这样的java集合对象中.但我不相信这会利用连续的记忆.

我知道这可以在C中完成,但可以用Java完成吗?这些对象可能具有不同的长度(因为它们可能包含字符串).有没有办法通过Java分配连续的内存?是否有Java集合对象?

请告诉我.

谢谢,jbu



1> Jon Skeet..:

你不能强迫它.如果快速连续分配所有对象,它们可能是连续的 - 但如果将它们存储在集合中,则无法保证集合将是实际值的本地集合.(该集合将引用对象,而不是包含对象本身.)

此外,GC压缩将在内存中移动值.

你有没有真实地描述你的应用程序,发现这是一个瓶颈?在大多数情况下,我希望其他优化措施能够以更可靠的方式帮助您.



2> erickson..:

不,你不能保证这个地方的参考.

通过分配字节数组或使用包中的映射字节缓冲区nio,您可以获得一块连续的内存,从中可以解码所需的数据(从这块内存中有效地反序列化感兴趣的对象).但是,如果您反复访问相同的对象,反序列化开销可能会失败.

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