当前位置: 首页 > 知识库问答 >
问题:

获取scala中Object/Case类的大小

戎洛华
2023-03-14
import org.apache.spark.util.SizeEstimator
case class event(imei: String, date: String)
val check = event(imei, date)
      println("size is event obj " + SizeEstimator.estimate(check))
      println("size is single charct " + SizeEstimator.estimate("a"))
      println("size is imei " + SizeEstimator.estimate(imei))
size is event obj 520
size is single 48
size is imei 72

共有1个答案

狄飞鹏
2023-03-14
scala> val char:java.lang.Character = 'a'
char: Character = a

scala> SizeEstimator.estimate(char)
res18: Long = 16

scala> SizeEstimator.estimate("A")
res19: Long = 48

如果您想要实际的Java堆大小,就必须用Java类型专门声明它们,否则仅仅使用单引号是行不通的。

scala> SizeEstimator.estimate('A')
<console>:27: error: type mismatch;
 found   : Char('A')
 required: AnyRef
Note: an implicit exists from scala.Char => java.lang.Character, but
methods inherited from Object are rendered ambiguous.  This is to avoid
a blanket implicit which would convert any scala.Char to any AnyRef.
You may wish to use a type ascription: `x: java.lang.Character`.
              SizeEstimator.estimate('A')

下面是字符串大小的计算公式-

最小字符串内存使用量(字节)=8*(int)(((no chars)*2)+45)/8)

    null
 类似资料:
  • 我看到过一些关于的博客,这些博客似乎可以很好地为类添加行为。 但是,如果我有一个并且我要怎么办?作为一个case类,我不能扩展它(不推荐/强烈不鼓励从case类继承)。这些皮条客模式是否允许我将数据添加到case类中?

  • 我需要在代码的几个地方将这个映射转换为我的case类,如下所示: 最简单的方法是什么?我能用隐式吗?

  • 问题内容: 我想创建一个遵循Scala setters / getters约定的Java类。 我尝试了以下简单的课程,但它不起作用: 但是,当我尝试从scala访问它时: 并且我收到“向val重新分配”的错误消息。我试图寻找这个问题,但是所有问题都从scala到Java出现了。 正确的做法是什么? 谢谢! 问题答案: 您只能这样做,而且您可能不想这样做已经足够困难。 您 不能 做的是编写一个裸露的

  • 假设我有一个直接转换db表的case类,在创建新行时将随机生成id。 现在查看这些测试,我需要从测试中检索一行,并将其与 但是我没有第一个参数,因为它是随机创建的,我想以某种方式忽略它... 我试过了 但这是无效的。 有什么方法可以在Scala中忽略case类参数吗? 谢谢

  • 问题内容: 我在JavaScript中有一个json-object,我想在其中获取使用过的键。我的JavaScript代码如下所示: 我想要一个循环来提醒我“ person”和“ age”,这是json-Array中第一个对象的键。 问题答案: [您拥有的只是一个对象,而不是“ json- object”。JSON是一种文本符号。您引用的是使用数组初始化程序和对象初始化程序(也称为“对象文字语法”

  • 这是我第一次使用Mongo Scala驱动程序(2.1版),在处理我的一些case类时,我注意到了一些奇怪的行为--其中一些类在中没有被识别为此类,结果是其中一个类的解码数据走错了路,并以第204行的错误结束,因为列表为空。 下面是StackTrace的前三分之一左右: 我的应用程序模拟某人的谷歌日历。以下是我的案例类: 这里有一个屏幕截图的链接,显示了发生错误点的的内容。 屏幕截图显示了一个包含