一、起源 1960年Lisp语言: 第一门真正使用内存动态分配和垃圾回收的语言。 二、概要 线程相关:程序计数器、虚拟机栈、本地方法栈,不需要考虑垃圾回收 Java堆、方法区:需要考虑垃圾回收 三、垃圾回收算法 1 引用计数算法 2 可达性分析算法 垃圾收集算法 1 标记-清除算法 Mark-Swe ...
分类:
编程语言 时间:
2019-08-23 22:12:47
阅读次数:
122
pthread_join函数 阻塞等待线程退出,获取线程退出状态 其作用,对应进程中 waitpid() 函数。 int pthread_join(pthread_t thread, void **retval); 成功:0;失败:错误号 参数:thread:线程ID (【注意】:不是指针);ret ...
分类:
编程语言 时间:
2019-08-23 19:29:16
阅读次数:
105
Q: 什么是内存泄露? A:已经不再使用的内存未能被程序释放,叫内存泄露(memory leak)。 Q: 什么情况下出现内存泄漏? 首先了解一下【垃圾回收】:垃圾回收(英语:Garbage Collection,缩写为GC)在计算器科学中是一种自动的存储器管理机制。当一个计算机上的动态存储器不再需 ...
分类:
其他好文 时间:
2019-08-23 16:19:58
阅读次数:
103
go4 引用循环 go package main const N=3 func main(){ m := make(map[int]int) for i:=0 ; i012 make() new() make() 创建切片,map,数组,通道 new() 创建自定义对象 make()会初始化,new ...
分类:
其他好文 时间:
2019-08-23 13:21:16
阅读次数:
103
《深入理解 Java 虚拟机》学习 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管 ...
分类:
编程语言 时间:
2019-08-23 13:20:24
阅读次数:
83
之前有提到过,为了提高GC的回收效率,对象实例的内存分配不一定必须存在于堆区中,还可采用堆外分配。而最常见的堆外分配就是采用逃逸分析筛选出未发生逃逸的对象,在栈帧中分配内存空间。 逃逸分析:就是分析出对象的作用域。当一个对象在方法体内声明后,该对象的引用被其他外部所引用时该对象就发生了逃逸,反之就会 ...
分类:
其他好文 时间:
2019-08-22 23:38:21
阅读次数:
111
我们用free、top等相关能够查询到当前内存的使用情况的命令时,总会有一个buff/cache让我们很困惑。 buffer 即写如磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘。 cache 即读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备。 如何划分 ...
分类:
系统相关 时间:
2019-08-22 12:58:51
阅读次数:
100
css 1、盒模型 2、flex 3、css单位 4、css选择器 5、bfc 清除浮动 6、层叠上下文 7、常见页面布局 8、响应式布局 9、css预处理,后处理 10、css3新特性 animation和transiton的相关属性 animate和translate 11、display哪些取... ...
分类:
其他好文 时间:
2019-08-22 01:01:09
阅读次数:
77
变量对于基本数据类型来说变量名和值同时存储于栈内存里面的一块空间之中 对于引用类型来说则是栈内存里面的变量指向堆里面的实际对象,在栈中的变量来说变量名和指向对象的地址存在同一块内存里面。 方法的参数和基本类型变量都是存储于栈中的 对于方法来说进入方法开辟空间,方法执行完退出则回收内存,很明显方法中的 ...
分类:
其他好文 时间:
2019-08-21 18:56:18
阅读次数:
76
常用的两种算法: 引用计数(新版浏览器已弃用,弃用原因:会出现循环引用的情况,无法进行垃圾回收,导致内存泄漏) 标记清除 引用计数法 引用计数,顾名思义一个对象是否有指向它的引用,即看栈中是否有指向要释放的该块堆内存中的地址,如果没有,则该块内存是不需要的,可以进行释放,即垃圾回收 下面引用大佬的一 ...
分类:
编程语言 时间:
2019-08-21 11:18:48
阅读次数:
105