场景:

  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等来封装数据!

Spark程序数据结构优化的更多相关文章

  1. Spark程序运行常见错误解决方法以及优化

    转载自:http://bigdata.51cto.com/art/201704/536499.htm Spark程序运行常见错误解决方法以及优化 task倾斜原因比较多,网络io,cpu,mem都有可 ...

  2. Spark面试题(七)——Spark程序开发调优

    Spark系列面试题 Spark面试题(一) Spark面试题(二) Spark面试题(三) Spark面试题(四) Spark面试题(五)--数据倾斜调优 Spark面试题(六)--Spark资源调 ...

  3. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  4. Spark排错与优化

    一. 运维 1. Master挂掉,standby重启也失效 Master默认使用512M内存,当集群中运行的任务特别多时,就会挂掉,原因是master会读取每个task的event log日志去生成 ...

  5. php程序效率优化的一些策略小结

    php程序效率优化的一些策略小结   1.在可以用file_get_contents替代file.fopen.feof.fgets等系列方法的情况下,尽量用 file_get_contents,因为他 ...

  6. iOS程序性能优化

    iOS程序性能优化 一.初级 使用ARC进行内存管理 在iOS5发布的ARC,它解决了最常见的内存泄露问题.但是值得注意的是,ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露, ...

  7. iOS 程序性能优化

    前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写 ...

  8. Spark认识&环境搭建&运行第一个Spark程序

    摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度.这里总结下对Spark的认识.虚拟机Spark安装.Spark开发环境搭建及编写第一个scala程序.运 ...

  9. [转] - Spark排错与优化

    Spark排错与优化 http://blog.csdn.net/lsshlsw/article/details/49155087 一. 运维 1. Master挂掉,standby重启也失效 Mast ...

随机推荐

  1. javascript编程中this解析

    一.为什么要使用this? this 提供了一种更优雅的方式来隐式"传递"一个对象引用,因此可以将 API 设计得更加简洁并且易于复用.随着你的使用模式越来越复杂,显式传递上下文对 ...

  2. 转载 Python中关键字global与nonlocal的区别

    转载自CSDN 雁丘1990, 原文地址: https://blog.csdn.net/xcyansun/article/details/79672634 这篇文章写的很赞, 条理清晰, 分析循序渐进 ...

  3. DFSMN结构快速解读

    参考文献如下: (1) Deep Feed-Forward Sequential Memory Networks for Speech Synthesis (2) Deep FSMN for Larg ...

  4. [视频]K8飞刀 mysql注入点拿shell & UDF提权教程

    [视频]K8飞刀  mysql注入点拿shell & UDF提权教程 链接: https://pan.baidu.com/s/1a7u_uJNF6SReDbfVtAotIw 提取码: ka5m

  5. 安尼泰科T1行车记录仪说明书

    点击下载:安尼泰科T1行车记录仪说明书 自己总结:行车记录仪_使用总结.rar PS:我的型号是T1C,但说明书也适合.

  6. springboot属性注入转化为对象

    第一种方式:用spel表达式解析 @Value("#{ T(com.alibaba.fastjson.JSON).parseObject('${train.purchase}')}" ...

  7. Go 环境变量相关操作

    Go语言中os包提供了一些环境变量的操作封装.包括: 设置环境变量:Setenv 获取环境变量:Getenv 删除指定的环境变量:Unsetenv 获取所有环境变量:Environ 清除所有环境变量: ...

  8. top命令查看进程下线程信息以及jstack的使用

    转自:https://www.cnblogs.com/shengulong/p/8513652.html top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid jsta ...

  9. m2eclipse(maven插件)报错解决

    在eclipse中安装了m2eclipse(maven插件) 的问题结解决 在安装后,出现下列警告: The Maven Integration requires that Eclipse be ru ...

  10. libtorch初体验

    环境 Ubuntu -18.04.1, opencv3.4.0 ,  python 3.6,  cmake 3.5.0, pytorch 1.0. pytorch官网下载对应版本:https://py ...