1. 标记——清除算法: 最基础的算法,分为两个标记和清除两个阶段:首先标记所有需要回收的对象,在标记完成后统一清除。 两个不足: 1:标记和清除效率都不高 2:会产生大量不连续的内存碎片,可能导致以后无法给大对象分配内存; 2:复制算法: 复制算法将可用内存容量分为大小相等两块,每次只使用一块,当 ...
分类:
编程语言 时间:
2019-08-15 21:17:36
阅读次数:
115
一、简介 在 Spark 中,提供了两种类型的共享变量:累加器 (accumulator) 与广播变量 (broadcast variable): + 累加器 :用来对信息进行聚合,主要用于累计计数等场景; + 广播变量 :主要用于在节点间高效分发大对象。 二、累加器 这里先看一个具体的场景,对于正 ...
分类:
其他好文 时间:
2019-08-10 10:19:46
阅读次数:
124
1、对象优先在Eden区分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 2、大对象直接进入老年代 所谓的大对象是指,需要大量连续内存空间的Java对象,最典型的大对象就是那种很长的字符串以及数组(例如:new byte[2*10 ...
分类:
其他好文 时间:
2019-07-21 18:53:38
阅读次数:
148
集合就是将有共同特点的事物放在一起,形成一个整体,方便对他们进行批量处理。Java集合就是将同一种数据结构的数据放在一个容器里,形成一个大对象,方便对这个容器里的同类型(泛型。不是指同一个类的对象)的对象进行遍历等操作,主要分为两大类:Collection 和 Map。Collection是数组结构 ...
分类:
编程语言 时间:
2019-07-19 15:33:03
阅读次数:
122
三大对象 1.DataFrame(index, columns ,values) 1)先从文件(excel,csv,mysql)中读取,或者自己制造一个DataFrame对象 2)查看数据 查看数据的形状(几行几列) 查看每一列的数据类型,数据中是否有空值(行、列),查看每一列和标签的关系(离散-柱 ...
分类:
其他好文 时间:
2019-07-16 10:47:49
阅读次数:
86
1. 场景描述 因前端界面需存储元素较多,切割后再组装存储的话比较麻烦,就采用大对象直接存储到mysql字段中,根据mysql的介绍可以存放65535个字节,算了算差不多,后来存的时候发现: 一是基本都中文,mysql用的utf 8存储,每个字符要占用3个字节,剩下就能存2万出头的样子(21845) ...
分类:
数据库 时间:
2019-07-14 00:16:45
阅读次数:
197
强引用 Java 默认的就是强引用 只要有强引用存在,对象就不会被回收 软引用 如果内存足够就不进行回收,内存不够的时候会进行回收 比较适合做大对象的缓存 弱引用 如果垃圾回收发生,在线程扫描的时候,如果一个对象只有弱引用存在,那么就会被回收 如果这个对象是偶尔的使用,并且希望在使用时随时就能获取到 ...
分类:
编程语言 时间:
2019-07-12 12:37:16
阅读次数:
103
1、java.lang.StackOverflowError:在一个函数中调用自己就会产生这样的错误(栈溢出) 2、java.lang.OutOfMemoryError: Java heap space:new 一个很大对象 ...
分类:
编程语言 时间:
2019-07-06 17:34:37
阅读次数:
349
内存分配策略 1、对象优先分配在新生代Eden区 多数情况下,对象分配在新生代的Eden,若Eden区域内存不够,则引发一次Minor GC 2、大对象直接进入老年代 大对象直接分配在老年代,避免新生代里出现从Eden到Survivor频繁的内存复制 可用-XX:PretenureSizeThres ...
分类:
其他好文 时间:
2019-06-15 17:14:44
阅读次数:
79
项目上反馈了一个问题,就是在生产环境上,用户正常使用的过程中,出现了服务器内存突然暴涨,客户有点慌,想找下原因。 讲道理,内存如果是缓慢上涨一直不释放的话,应该是存在内存泄漏的,这种排查起来比较困难,还得找开发一块看;但像这种突然暴涨的,肯定是把某些大对象放到内存里了,而最有可能的,就是大查询了,比 ...
分类:
数据库 时间:
2019-06-15 17:12:30
阅读次数:
155