• Spark程序数据结构优化


    场景:

      1.scala中的对象:对象头是16个字节(包含指向对象的指针等源数据信息),如果对象中只有一个int的属性,则会占用20个字节,也就是说对象的源数据占用了大部分的空间,所以在封装数据的时候尽量不要使用对象!可以使用诸如:JSON来封装数据。

      2.scala中基本的数据类型会自动进行封箱操作,例如:int会自动变成Integer,这会额外增加对象头占用的空间!

      3.String在实际占用内存方面会占据40个字节(String的内部使用char[]来保存字符序列),另外需要注意的是String中的字符是占2个字节(UTF-16),如果内部有5个字符的话,实际上会占用50个字节!

      4.集合List,HashMap等其内部一般是使用链表来实现的,具体数据使用Entry封装,这些非常消耗内存!

    解决方案:

      1.优先使用原生数组,尽可能不要直接去使用ArrayList,HashMap,LinkedList等数据结构,例如List<Integer> list = new ArrayList<Integer>(),考虑替换为 int[] array = new int[length]。

      2.优先使用String(推荐使用JSON),而不是HashMap,List等来封装数据!

  • 相关阅读:
    JVM
    关于filter
    session
    xml
    互联网应用和企业级项目的区别
    本学期javaee目标
    团队项目软件度量
    团队项目总结
    团队项目来换网最新
    ubuntu18.04 编译opencv4.4.0 带cuda加速,ffmpeg
  • 原文地址:https://www.cnblogs.com/yszd/p/9426651.html
Copyright © 2020-2023  润新知