文章地址:http://www.haha174.top/article/details/258576
要较少内存的消耗,除了使用高效的序列化库之外还有一个很重要的事情,就是优化数据结构。从而避免java语法特性中所导致的额外的内存开销,比如基于指针的java的数据结构以及包装类型。
那么如何优化数据结构呢
1优先使用数组以及字符串,而不是集合类。也就是说优先用array,而不是ArrarList,LinkedList,HashMap等集合。
比如,有个List<Integer>list =new ArrayList<>()
;将其替换为int[] arr=new Int[];这样的话array即比List减少了额外信息存储开销,还能使用原始数据类型(int)来存储数据。比List中用Integer这种包装类型存储数据,要节省内存的多。
还比如通常企业级应用中做法是对于hashMap 和List 这种数据统一用String 拼接成特殊格式的字符串.
2 避免使用多层嵌套的对象结构,可以使用json 替代存储。
3对于有些能避免的场景,尽量使用int 代替String ,因为String虽然比Map List 高效多了但是还是有很多的额外内存消耗
4 在spark应用中id不要使用常用的uuid,因为没有办法转成int就用自增的int 类型的id 即可。
欢迎关注,更多福利
这里写图片描述