相关疑难解决方法(0)

如何在不实际序列化的情况下估计Java中对象的序列化大小?

要增强群集中的消息传递,重要的是要在运行时了解消息的大小(我应该更喜欢处理本地消息还是远程消息).

我可以找到基于java检测估计对象内存大小的框架.我测试了classmexer,它没有接近序列化大小和sourceforge SizeOf.

在一个小的测试用例中,SizeOf错误大约10%,比序列化快10倍.(仍然瞬态完全破坏了估计,因为例如ArrayList是瞬态的,但是被序列化为数组,修补SizeOf并不容易.但我可以忍受这种情况)

另一方面,10%的误差和10%的误差似乎不太好.任何想法我怎么能做得更好?

更新:我还测试了ObjectSize(http://sourceforge.net/projects/objectsize-java).结果似乎只适合非继承对象:(

java serialization scala

15
推荐指数
2
解决办法
5895
查看次数

计算Java对象的字节大小

我正在计算java对象[hashmap]的大小[使用的内存].它包含[在运行时]不同数据类型的元素,因此[no-of-elem*size-of-element]并不是一种好方法.现在的代码是通过一系列的

if (x)
  do something
else if (primitives)
  lookup size and calculate
Run Code Online (Sandbox Code Playgroud)

然而,这个过程是CPU占用并且效率低下.

我正在考虑采用以下两种方法:

  1. 将对象序列化为缓冲区并获取大小.
  2. 查看java.lang.instrument以获取大小

我正在寻找任何人使用这些方法的性能,效率,缩放等经验,或者如果你知道更好的方法.

PS:这是我正在构建的后台实用程序,因此大小不需要超级准确,尽管它应该是正确的.因此,我愿意以准确性换取性能

我对深度大小不感兴趣[不会计算此对象引用的对象的大小.]

我正在寻找性能比较和理解getObjectSize()如何在内部工作..所以我不会搞砸别的东西来提高性能

谢谢

java serialization instrumentation

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

serialization ×2

instrumentation ×1

scala ×1