
内存管理
tuhuolong
足球,NBA
展开
-
内存映射(mmap系统调用)
<br />映射虚拟内存-->物理内存/Swap/文件<br /> <br />文件映射到内存,内存访问取代IO访问 <br /> <br />可以映射同一个文件以(进程)共享内存 <br /> <br />Linux进程虚拟地址空间---(分成)-->虚拟内存区<br />虚拟内存区(VMA)表:进程所有的虚拟内存区<br />内存映射:创建一个虚拟内存区(VMA),映射文件 <br /> <br />映射文件:外部程序调用VMA的(操作函数集中)操作函数访问映射文件的VMA <br />原创 2010-09-15 08:56:00 · 3334 阅读 · 2 评论 -
全面分析Java的垃圾回收机制
引言 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码转载 2011-03-09 14:52:00 · 595 阅读 · 0 评论 -
内存管理和垃圾回收
垃圾回收器:管理内存(1)分配内存(2)保留被引用内存(确保所有被引用的对象留在内存)(3)释放内存(不被引用的内存) 垃圾回收的时间:堆耗尽或达到一个阈值 内存泄露:(应用程序)引用没了,(堆)内存没释放 垃圾回收算法原创 2011-03-09 10:02:00 · 646 阅读 · 0 评论 -
垃圾回收趣史
引用计数(循环引用,Stop-The-World)----JavaScript |标记-清除(碎片,占CPU,Stop-The-World) | 双区复制(浪费一半内存,Stop-The-World) |标记-压缩(Stop-The原创 2011-03-28 15:02:00 · 1623 阅读 · 0 评论 -
Windows内存管理
关于内存管理 32位的Windows系统,每个进程都有4GB内存(Gigabytes)大小的虚拟内存空间可以寻址(因为32位指针可以使用从0x00000000 – 0xFFFFFFFF内的任何一个值),而64位的Windows系统,每个进程有8TB(Terabyt转载 2011-03-16 16:34:00 · 1429 阅读 · 0 评论 -
内存管理
(32位)每个进程4GB独立的虚拟内存(虚拟地址空间). 分配内存:(1)分配虚拟内存 (2)访问时映射 到 物理内存/Swap/文件 MMU管理虚拟内存和物理内存的映射 内存映射:虚拟内存映射到 物理内存/原创 2011-03-16 13:37:00 · 733 阅读 · 0 评论 -
Java垃圾回收
在Java中,通常通讯类型的服务器对GC(Garbage Collection)比较敏感。通常通讯服务器每秒需要处理大量进出的数据包,需要解析,分解成不同的业务逻辑对象并做相关的业务处理,这样会导致大量的临时对象被创建和回收。同时服务器如果需要同时保存用户状态的话,又会产生很多永转载 2011-03-09 14:33:00 · 712 阅读 · 0 评论 -
Linux(内核和用户态的)动态内存管理
http://www.ibm.com/developerworks/cn/linux/l-cn-slub/内核对象缓冲区管理Linux 内核在运行过程中,常常会需要经常使用一些内核的数据结构(对象)。例如,当进程的某个线程第一次打开一个文件的时候,内核需要为该转载 2011-08-29 17:12:20 · 1937 阅读 · 0 评论 -
malloc,calloc和realloc函数
malloc:分配内存,不初始化calloc:清零分配,初始化为0realloc:重新分配,不初始化原创 2011-09-26 11:16:48 · 811 阅读 · 1 评论 -
Hotspot垃圾回收
Hotspot VM 使用分代回收算法(Generational Collector) GC堆的分代:(1)Young Generation(年青代):大多数对象 Eden区+Survivor_1区+Survivor_2区(2)Old Gene转载 2011-03-09 15:43:00 · 1087 阅读 · 0 评论 -
Windows内存管理 - 隐藏在new和malloc背后的heap
先来说,heap是什么,heap就是堆,在不知道具体细节的时候,我们只知道,通过new和malloc,我们可以动态获得一个内存区域,用来存放自己的对象和变量,而这些内存区域都是在heap上的。heap应该就是一个内存区域吧。应该会有很多人这么认为过。 后来,学习了Win转载 2011-03-21 14:08:00 · 1185 阅读 · 0 评论 -
IBM Java垃圾回收
垃圾回收策略,第1部分垃圾回收策略,第2部分 出色的"清洁工具"--理解IBM Java垃圾回收器,第1部分:对象分配出色的"清洁工具"--理解IBM Java垃圾回收器,第2部分:垃圾回收出色的"清洁工具"--理解I转载 2010-11-03 14:38:00 · 919 阅读 · 0 评论 -
DLmalloc 内存分配算法
<br />dlmalloc由Doug Lea编写的内存分配算法<br /> <br />(1)mspace_malloc/mspace_free<br />(2) dlmalloc/dlfree<br /> <br />1.边界标记<br />2.空闲块分箱:2个分箱数组<br /> (1)小块空闲块大小(0-256):数组元素-空闲块链表<br /> (2)大块空闲块大小(>256):数组元素-空闲块树<br />3. 空闲段<br /> <br />内存分配过程:原创 2010-12-30 09:10:00 · 2624 阅读 · 1 评论 -
VirtualAlloc和VirtualCopy----VirtualFree
<br />VirtualAlloc 和VirtualCopy<br />VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。 <br />真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,MMU的页表就会增加一个entry,来表示物理--虚拟的映射关系。 <br /> <br />VirtualFree<br />VirtualF转载 2011-03-11 16:16:00 · 1169 阅读 · 0 评论 -
.Net内存管理、垃圾回收
<br />1. Stack和Heap<br /> 每个线程对应一个stack,线程创建的时候CLR为其创建这个stack,stack主要作用是记录函数的执行情况。值类型变量(函数的参数、局部变量等非成员变量)都分配在stack中,引用类型的对象分配在heap中,在stack中保存heap对象的引用指针。GC只负责heap对象的释放,heap内存空间管理<br /><br />Heap内存分配<br /> <br /> 除去pinned object等影响,heap中的内存分配很简单,一个转载 2011-03-25 14:23:00 · 1111 阅读 · 0 评论 -
C++的内存管理
<br />C++内存区:全局/静态,堆,栈,常量区,自由区<br /> 堆:比栈大,可穿越作用域<br />库:管理内存<br />RAII(resource acquisition is initlization):初始化获取资源,销毁释放资源<br /> <br /> <br /> <br />摘要:C++是一种流行且功能强大的程序设计语言,利用C++已经产生出世界上各异的程序软件包。C++是在C语言的基本之上发展而来,它能够对C语言向下兼容,所以它也C语言的许多不足,其中内存管理就转载 2011-03-25 11:11:00 · 589 阅读 · 0 评论 -
CLR内存管理
<br />自动内存管理是公共语言运行时在托管执行过程过程中提供的服务之一。公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。对开发人员而言,这就意味着在开发托管应用程序时不必编写执行内存管理任务的代码。自动内存管理可解决常见问题,例如,忘记释放对象并导致内存泄漏,或尝试访问已释放对象的内存。本节描述垃圾回收器如何分配和释放内存。分配内存<br />初始化新进程时,运行时会为进程保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。托管堆维护着一个指针,用它指向将在堆中分配的下一个对象的地址。转载 2011-03-25 13:50:00 · 873 阅读 · 0 评论 -
内存管理内幕
<br /> <br />内存管理内幕<br /> <br /> <br /> <br />转载 2011-03-31 17:22:00 · 949 阅读 · 0 评论 -
GC垃圾回收的三色标记算法
<br />GC中用三种颜色标记不同的对象<br />(1)黑色:本身强引用,并已处理对象中的子引用<br />(2)灰色:本身强引用,还没处理对象中的子引用<br />(3)白色:不可达对象<br /> <br />Mark扫描时根据状态进行标记原创 2011-04-12 14:49:00 · 6745 阅读 · 0 评论 -
Dalvik記憶體
dvmGcStartup 朋友曾介紹一個小工具 tree ,這是一個能在文字模式下,將目錄及檔案以樹狀形式呈現。用 tree 列出 vm/ 目錄下所有子目錄和檔案,能看到有一個 GC.h 在 vm/alloc/ 目錄下。這應該就是我們所需要的。在 GC.h 裡面可以看到十來個转载 2011-09-13 09:33:22 · 1442 阅读 · 0 评论 -
Dalvik内存管理
Dalvik内存:1.系统堆/外部堆(External heap)/CRT堆(Java方法调用栈/Java函数调用栈/...)----malloc/calloc/realloc/free OS系统启动本地程序->创建CRT(包括堆)->入口函数2.系统栈(Dalvik函数调用栈) 系统创建:SP指针3.GC堆(系统申请内存,dl组织成GC堆)----dvmMallo原创 2011-04-01 14:41:00 · 4657 阅读 · 1 评论