尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么? 主要有三种类型:内存泄露、内存碎片和内存崩溃 内存崩溃是内存使用最严重的结果,主要原因有数组访问越界、写已经释放的内存、指针计算错误、访问堆栈地址越界等等。碎 ...
分类:
其他好文 时间:
2020-04-11 23:59:52
阅读次数:
119
概述 复制算法就是将内存空间二等分, 每次只使用其中一块. 当执行GC时, 讲A部分的所有活动对象集体移到B中, 就可以讲A全部释放. 画个图就是: ? 在执行GC前, 内存长这样: ? 当执行GC后, 内存就变成这样了: 还记得 的问题是什么吗? 内存碎片化严重. 现在好了, 碎片化问题解决了, ...
分类:
编程语言 时间:
2020-04-06 15:38:10
阅读次数:
70
info memory参数简介 used_memory_human:262.89M used_memory_rss:267489280 mem_fragmentation_ratio:0.97 (Redis在编译时便会指定内存分配器;内存分配器可以是 libc 、jemalloc或者tcmalloc ...
分类:
其他好文 时间:
2020-03-23 15:28:34
阅读次数:
91
Apache NiFi深度扩展 介绍 该高级文档旨在深入了解NiFi的实施和设计决策。它假设读者已经阅读了足够的其他文档来了解NiFi的基础知识。 FlowFiles是NiFi的核心,也是基于流程的设计。FlowFile是一种数据记录,由指向其内容(有效负载)的指针和支持内容的属性组成,该指针与一个 ...
分类:
Web程序 时间:
2020-03-03 11:22:12
阅读次数:
104
操作系统的基本特性 操作系统的基本特性 并发 并行与并发区别 :并行是多个任务在 同一时刻 内同时发生,并发是多个任务在 同一时间内间隔 进行 引入 进程 :进程是在系统中独立运行并作为资源分配的基本单位,由一组机器指令和数据、堆栈等组成的, 未引入进程的系统中,属于同一个应用程序的计算程序和 I/ ...
分类:
其他好文 时间:
2020-02-25 12:39:31
阅读次数:
197
在STL中,Memory Allocator 处于最底层的位置,为一切的 Container 提供存储服务,是一切其他组件的基石。对于一般使用 STL 的用户而言,Allocator 是不可见的,如果需要对 STL 进行扩展,如编写自定义的容器,就需要调用 Allocator 的内存分配函数进行空间 ...
分类:
编程语言 时间:
2020-02-22 09:20:26
阅读次数:
68
Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台。javac编译好后的class文件,在Windows、Linux、Mac等系统上,只要该系统安装对应的Java虚拟机,class文件都可以运行。达到”一次编译,到处运行”的效果。 一、JVM是什么? 而JVM ...
分类:
其他好文 时间:
2020-02-08 09:14:43
阅读次数:
65
jvm区域总体分两类,heap区和非heap区。heap区又分: Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机 ...
分类:
其他好文 时间:
2020-02-06 22:58:40
阅读次数:
69
java可以自动进行垃圾收集,c++需要手动释放内存,这个功能将程序员解放出来,能将更多的注意力放在需要实现的业务上,这也是java相对c++的一个巨大优势,jvm有哪些垃圾收集算法呢?标记清除算法:算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象从图中可以看出这种算法的缺点在于,垃圾被回收以后造成了大量不连续的内存碎片。碎片太多可能会导致以后需要分配
分类:
编程语言 时间:
2020-01-23 11:01:41
阅读次数:
85
四种GC算法 GC垃圾回收,首先需要判断哪些对象需要回收 判断对象存活 可达性分析 : ? 从GC Roots开始向下查询,如果一个对象到任何一个GC Root对象都没有一个引用链相连的话,说明此对象不可用。 ? 四个GC Root对象 1. JVM栈中引用的对象 2. 方法区静态属性引用的对象 3 ...
分类:
编程语言 时间:
2020-01-10 15:52:00
阅读次数:
117