内存管理

Android 内存泄露检测工具 LeakCanary 的监控原理

淺唱寂寞╮ 提交于 2019-12-03 21:50:01
首先回顾一下 java 的几种 reference: 从jdk 1.2 开始,引用分为 强引用,软引用、弱引用 和虚引用, 其中 软引用、弱引用 和虚引用 和 ReferenceQueue 关联。 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 1,强引用(Strong Reference, 没有具体的类来标识强引用,正常的使用的对象引用都是强引用,由vm实现) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 2,软引用(SoftReference) 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。 只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。 软引用可以和一个引用队列(ReferenceQueue)联合使用

C Primer Plus 第12章 存储类、链接和内存管理

懵懂的女人 提交于 2019-12-03 21:40:30
12.1 存储类 C为变量提供了5种不同的存储模型,或称为存储类。还有基于指针的第6种存储模型,本章稍后(“分配内存malloc()和free()”小节)将会提到。可以按照一个变量(更一般地,一个数据对象)的存储时期来描述它,也可以按照它的作用域(SCOPE)以及它的链接(linkage)来描述它。存储时期就是变量在内存中保留的时间,变量的作用域和链接一起表明程序的哪些部分可以通过变量名来使用该变量。不同的存储类提供了变量的作用域、链接以及存储时期的不同组合。 您可以拥有供多个不同的源代码文件共享的变量、某个特定文件中所有函数都可以使用的变量、只有在某个特定函数中才可以使用的变量、甚至只有某个函数的一小部分内可以使用的变量。 您可以拥有在整个程序运行期间都存在的变量,或者只有在包含该变量的函数执行时才存在的变量。您也可以使用函数调用 为数据的存储显示的分配和释放内存。 12.1.1 作用域 作用域描述了程序中可以访问一个标识符的一个或多个区域。 一个C变量的作用域可以是 代码块作用域、函数原型作用域,或者文件作用域 。 到目前为止的程序实例中使用的都是代码块作用域变量。 在代码块中定义的变量具有代码块作用域(block scope),从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见。 另外, 函数的形式参量尽管在函数的开始花括号前进行定义,同样也具有代码块作用域

JAVA网络编程:计算机原理学习

痞子三分冷 提交于 2019-12-03 18:27:46
计算机原理学习(序) 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理 计算机原理学习(2)-- 存储器和I/O设备和总线 计算机原理学习(3)-- 内存工作原理 计算机原理学习(4)-- 操作系统发展和程序编译 计算机原理学习(5)-- x86-16 CPU和内存管理 计算机原理学习(6)-- x86-32 CPU和内存管理之分页管理 计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理 来源: oschina 链接: https://my.oschina.net/u/1169289/blog/715863

2019-2020-1学期 20192426 《网络空间安全导论》第五周学习总结

拟墨画扇 提交于 2019-12-03 15:31:36
第十章 操作系统 1.操作系统的角色 应用软件(application software) :帮助我们解决现实世界问题的程序。 系统软件(system software) :管理计算机系统并与硬件进行交互的程序。 操作系统(operating system) :管理计算机资源并为系统交互提供界面的系统软件。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载入永久存储器(ROM)中存储的一小组系统指令。这些指令将从二级存储器(通常是硬盘)中载入大部分系统软件。最终将载入操作系统软件的所有关键元素,执行启动程序,提供用户界面,系统就准备就绪了。这个过程就叫作引导计算机。术语“引导”来自于“靠自己的努力振作起来”这一思想,这也正是计算机开机后它所做的事情。 计算机可以具备两个或更多个操作系统,用户在计算机开机时可以选择使用哪个操作系统。这种配置称为双引导或多引导系统。不过,任何时候都只有一个操作系统在控制计算机。 内存、进程与CPU管理   多程序设计(multiprogramming) :同时在贮存中驻留多个程序,由它们竞争CPU的技术。 内存(memory management) :了解主存中载有多少个程序以及它们的位置的动作。 进程(process) :程序执行过程中的动态表示法。 进程管理(process management)

2019-2020-1学期 20192413 《网络空间安全专业导论》第五周学习总结

南笙酒味 提交于 2019-12-03 15:26:41
第十章 操作系统 10.1操作系统的角色 操作系统负责管理硬件资源,允许应用软件直接的或通过其他系统软件访问系统资源。它提供了直接的人机交互界面。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。 操作系统的各种角色通常都围绕着一个中心思想“良好的共享” 10.1.1内存、进程与CPU管理 多道程序设计(multiprogramming):同时在主存中驻留多个程序,由它们竞争CPU的技术 内存管理(memory management):了解主存中载有多少个程序以及它们的位置的动作 所有现代操作系统都采用多道程序设计技术,因此,操作系统必须执行内存管理,以明确内存中有哪些程序以及它们驻留在内存的什么位置。 进程(process):程序执行过程中的动态表示法 进程管理(process management):了解活动进程的信息的动作 CPU调度(CPU scheduling):确定主存中的哪个进程可以访问CPU以便执行的动作 10.1.2批处理 程序和系统指令集合在一起称为作业 现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件以控制一个大型程序或一组交互程序的处理。 10.1.3分时 分时(timesharing):多个交互用户同时共享CPU时间的系统 虚拟机(virtual machine):分时系统创建的每个用户都有专属机器的假象 主机

2019-2020-1学期 20192403 《网络空间安全专业导论》第五周学习总结

≯℡__Kan透↙ 提交于 2019-12-03 14:47:34
2019-2020-1学期 20192403 《网络空间安全专业导论》第五周学习总结 第十章 学习收获 什么是操作系统,操作系统扮演着怎样的角色 操作系统的几个要素 如何安排用户与计算机的交互 内存管理 进程管理 CPU调度 待解决问题 页式内存管理 三种CPU调度优先方法的周转周期有什么区别? 来源: https://www.cnblogs.com/ZhaoqQiuhan/p/11800863.html

2019-2020-1学期 20192420《网络空间安全专业导论》第五周学习总结

末鹿安然 提交于 2019-12-03 11:56:35
2019-2020-1学期 20192420《网络空间安全专业导论》第五周学习总结 学习的收获 在第10章的学习过程中,让我从 操作系统 的方面去更深入的了解计算机。比如操作系统所扮演的角色中, 应用软件和系统软件 这个双子座事物让我理解到了计算机是 怎样解决现实世界问题和与硬件进行交互的过程 。书中不仅给我们介绍了我们所熟知的各种版本的 Windows ,还有个人计算机比较流行使用的操作系统—— Linux 。接下来我接触到了一种名为 多道程序设计 的技术,明白了竞争CPU的概念。此外,我也认识了 批处理 在现实生活中与计算机中的不同。对于分时概念,这是由 如何更大程度地利用机器地能力和速度地的问题 引出。书中还详细介绍了操作系统的其余要素,比如说 实时系统和响应时间 等等。紧接着,在内存管理中,我了解到了两个起重要作用的事物—— 逻辑地址与物理地址 ,因为它俩能够知道程序所使用的是什么地址。书中又为我们介绍了三种内存管理技术,即是 单块内存管理、分区内存管理和页式内存管理 ,书中为我们详细的介绍了其优缺点,以及用图像的方式让我们能够深入理解它的意义。在进程管理中,我学习到了进程会经历的几种状态,即 进入系统、准备执行、执行、等待资源以及执行结束 。最后,书中还介绍了 CPU调度 ,此外还为我们区分了 非抢先调度与抢先调度 的意思

2019-2020-1学期 20192419 《网络空间安全专业导论》第五周学习总结 (读书心得)

淺唱寂寞╮ 提交于 2019-12-03 11:52:12
读书心得:    通过学习《计算机科学概论》的第五部分操作系统层,我从第十章了解到操作系统是管理计算机资源的系统软件的一部分,是人类用户、应用软件和系统硬件设备之间的协调者。    多道程序设计技术允许在内存中同时驻留多个程序,让它们竞争CPU时间。进程是执行中的程序。操作系统必须执行精细的CPU调度、内存管理和进程管理,以确保访问CPU的公平性。    批处理把使用相同或相似资源的作业组织成批。分时技术为每个用户创建一个虚拟机,允许多个用户同时与计算机进行交换。    操作系统必须管理内存,以控制和监管把进程载入主存中的什么位置。任何内存管理技术都必须定义联编逻辑地址和物理地址的方法。有多种内存管理的策略。单块内存管理法除了操作系统外只允许一个程序驻留主存。分区法是把内存划分成几个分区,进程要载入这些分区。固定分区法中的分区个数是固定的,动态分区法则是根据载人的进程的需要决定的。页式内存管理法是把内存划分为帧,把程序划分为页。程序的页在内存中不必是连续的。请求分页法在任何时刻都只需要一部分程序位于内存中。    操作系统管理进程的生命状态,即程序在执行过程中要历经的阶段。进程控制块存储了每个进程的必要信息。    CPU调度算法确定了下一个使用CPU的进程。先到先服务的CPU调度给予最早达到的作业优先权。最短作业优先算法给予运行时间最短的作业优先权

2019-2020-1学期 20192419 《网络空间安全专业导论》第五周学习总结 (读书笔记)

不打扰是莪最后的温柔 提交于 2019-12-03 11:50:53
第十章 操作系统 10.1 操作系统的角色 现代软件可以分为两类————应用软件和系统软件 应用软件: 帮助我们解决现实世界问题的程序。 系统软件:管理计算机系统并与硬件进行交互的程序。 操作系统:管理计算机资源并为系统交互提供界面的系统软件。 一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。计算机硬件是靠电线连接的,初始时载入永久性存储器中存储的一小组系统指令。 计算机可以具备两个或者多个操作系统,这种配置称为双引导或多引导系统。 操作系统负责管理资源,而这些资源通常是由使用它们的程序共享的。多个并发执行的程序将共享主存,依次使用CPU,竞争使用输入/输出设备的机会。 10.1.1 内存、进程与CPU管理 正在执行的程序都驻留在主存中,其中的指令以读取-解码-执行这种周期性方式被一个接一个地处理。 多道程序设计:同时在主存中驻留多个程序,由它们竞争CPU的技术。 内存管理:了解主存中载有多少个程序以及它们的位置的动作。 进程:程序执行过程中的动态表示法。 进程管理:了解活动进程的信息的动作。 CPU调度:确定主存中的哪个进程可以访问CPU以便执行的动作。 10.1.2 批处理 在交付程序时,用户需要为执行程序所需的系统软件或其他资源提供一套单独的指令。程序和系统指令集合在一起,称为 作业 。 现在术语“批”表示的是一个系统,在这个系统中

2019-2020-1学期 20192420 《网络空间安全专业导论》第五周读书笔记

三世轮回 提交于 2019-12-03 11:48:28
第10章 操作系统 10.1 操作系统的角色 现代软件(反映了不同的程序设计目的) :即 应用软件与系统软件 两类。 应用软件(application software) :帮助我们解决现实世界问题的程序。 系统软件(system software) :管理计算机系统并与硬件进行交互的程序。 操作系统(operating system) :管理计算机资源并与系统交互提供界面的系统软件。 一台计算机通常只有 一个 活动的操作系统,在系统运行中负责控制工作。 任何时候都只有 一个操作系统 在控制计算机。 双引导或多引导系统 :计算机可以具备 两个或者更多个 操作系统,用户在计算机开机时可以选择使用哪个操作系统。 10.1.1 内存、进程与CPU管理 多道程序设计(multiprogramming) :同时在主存中驻留多个程序,由它们竞争CPU的技术。 内存管理(memory management) :了解主存中载有多少个程序以及它们的位置的动作。 进程(process) :程序执行过程中的动态表示法。 进程管理(process management) :了解活动进程的信息的动作。 CPU调度(CPU scheduling) :确定主存中的哪个进程可以访问CPU以便执行的动作。 操作系统自身也是 必须执行的程序 ,所以在内存中也要和其他系统软件及应用程序一起 管理和维护 OS进程。