
linux memory
剥丝机器人
这个作者很懒,什么都没留下…
展开
-
android 内存泄漏问题
内存泄露问题在一些压力测试的场景很容易暴露,例如一些常用应用场景反复操作(eg:反复切换前后摄像头,反复进入退出相机应用、压力拍照等等)。内存泄露一般表现为:①内存分配释放,导致进程空间虚拟地址被分配完,或者物理地址被分配完。②文件泄露,导致进程空间文件句柄数达到最大值。③线程泄露,导致进程空间虚拟地址被分配完,进程内保留很多线程栈(stack)。转载 2016-07-29 15:04:40 · 1182 阅读 · 0 评论 -
ION 内存管理
what is ION?ION 内存管理从android4.0开始被引入ION模块是可扩展的(API都是统一的),支持各种形式的内存分配方式,可以表述不同的硬件资源和他们的一些限制ION 支持连续与不连续内存的分配ION 给Kernel and User space processes提供了相应的APIs 当前支持的memory typeION_HEAP_TYPE_CARVE转载 2016-08-03 15:24:22 · 686 阅读 · 0 评论 -
std::vector::clear
原型:#include void clear();函数clear()删除储存在vector中的所有元素. 如果vector的元素是一些object, 则它将为当前储存的每个元素调用它们各自的析构函数(destructor). 然而, 如果vector储存的是指向对象的指针, 此函数并不会调用到对应的析构函数. 在第二种情况下, 为了完全删除vector中的元素则应使用一个类似于下的循环转载 2016-08-04 11:24:42 · 1766 阅读 · 0 评论 -
android 内存泄漏分析过程详解
1 运行自动化测试工具; 跑用例,譬如执行100遍2 在运行之初观察内存分配情况; 2.1 查看进程号C:\Users\Administrator>adb shell ps | find "camera"camera 292 1 114960 14452 ffffffff b6f178bc S /system/bin/mm-qcamera-daemonsy转载 2016-08-04 11:32:08 · 2459 阅读 · 0 评论 -
ION基本概念介绍和原理分析
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;转载 2016-08-04 11:33:53 · 2885 阅读 · 0 评论 -
ION基本概念介绍和原理分析
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;转载 2016-08-04 11:35:43 · 869 阅读 · 0 评论 -
sp<> 强指针类的用法
文一:转:http://wangjun-1985.spaces.live.com/blog/cns!E9070276AAF56C8E!472.entry在Android 中可以广泛看到的template class Sp 句柄类实际上是android 为实现垃圾回收机制的智能指针。智能指针是c++ 中的一个概念,因为c++ 本身不具备垃圾回收机制,而且指针也不具备构造函数和析构函数,所以为转载 2016-08-04 11:38:32 · 3289 阅读 · 0 评论 -
MMU
1. MMUMMU:memory management unit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(main memory)的两级也表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是disabled。MMU的主要作用是负责从CPU内核发出的虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程转载 2017-10-27 15:06:47 · 818 阅读 · 0 评论 -
Export a buffer as a DMABUF file descriptor
7.21. ioctl VIDIOC_EXPBUFView page source7.21. ioctl VIDIOC_EXPBUF7.21.1. NameVIDIOC_EXPBUF - Export a buffer as a DMABUF file descriptor.7.21.2. Synopsisint ioct转载 2017-10-27 15:12:17 · 1807 阅读 · 0 评论 -
DMA buffer importing
3.4. Streaming I/O (DMA buffer importing)View page source3.4. Streaming I/O (DMA buffer importing)The DMABUF framework provides a generic method for sharing buffers between multiple转载 2017-10-27 15:13:33 · 2564 阅读 · 0 评论 -
理解 Memory barrier(内存屏障)
转自:https://blog.youkuaiyun.com/world_hello_100/article/details/50131497参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://en.wikipedia.org/wiki/Out-of-order_executionhttps://www.kernel.org/doc/Documen...转载 2018-05-24 17:30:57 · 806 阅读 · 0 评论 -
ARM64 Kernel Image Mapping的变化
ARM64 Kernel Image Mapping的变化作者:smcdef 发布于:2018-4-21 20:25 分类:内存管理引言随着linux的代码更新,阅读linux-4.15代码,从中发现很多与众不同的地方。之所以与众不同,就是因为和我之前从网上博客或者书籍中看到的内容有所差异。当然了,并不是为了表明书上或者博客的观点是错误的。而是因为linux代码更新的太快,网上的博客和...转载 2019-03-22 13:14:50 · 962 阅读 · 1 评论 -
linux内核中的copy_to_user和copy_from_user(一)
linux内核中的copy_to_user和copy_from_user(一)2017年12月21日 20:07:32 prike 阅读数:4768linux内核中的copy_to_user和copy_from_user(一)Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.ne...转载 2019-03-26 14:43:05 · 4075 阅读 · 0 评论 -
详细讲解从用户空间申请内存到内核如何为其分配内存的过程
Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨...转载 2019-04-15 11:09:10 · 1366 阅读 · 1 评论 -
页表
页表结构分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。页表可看做简单的220个物理地址数组。线性到物理地址的映射功能可以简单地看做进行数组查找。线性地址的高20位构成这个数组的索引值,用于选择对应页面的物理(基)地址。线性地址的低12位给出了页面中的偏移量,加上页面的基地址最终形成对应的物理地址。由于页面基地址对齐在4K边界上,因此页面基地址...转载 2019-04-24 13:46:22 · 3441 阅读 · 0 评论 -
proc下文件(buddyinfo/vmallocinfo...)
将linux-2.6.35/Documentation/filesystems/proc.txt内容copy至此,以备查。------------------------------------------------------------------------------ T H E /proc F I L E S Y S T E M转载 2015-03-07 12:25:09 · 2793 阅读 · 0 评论 -
linux kernel内存映射实例分析 ---- 非常棒的文章
linux kernel内存映射实例分析http://blog.youkuaiyun.com/michaelcao1980/article/details/13021365现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我转载 2015-03-07 12:18:42 · 1065 阅读 · 0 评论 -
android 内存监控 procrank vss pss
通过 pss 和 uss 来查看进程使用的内存情况在模拟器上 adb shell procrank 可以查看到以下信息zhengs-MacBook-Air:~ yajun0601$ adb shellshell@android:/ $ procrank -p warning: could转载 2013-07-31 14:47:59 · 2365 阅读 · 0 评论 -
get_mm_rss(mm)
get_mm_rss函数用于获取一个进程当前所占用的物理内存的字节数。rss : resident set size, the non-swappend physical memory that a task has used in.转载 2013-05-24 19:25:52 · 1789 阅读 · 0 评论 -
mmap()函数基本用法
#include // 参数可分为三组:void * mmap(void *addr, size_t length, //进程地址空间相关的参数(即地址分配的起点(为0则由系统决定起始地址)和长度) int prot, int flags, //权限和标志相关参数(prot指定地址空间的访问权限,flags指定映射标志,eg pri转载 2013-05-24 19:50:34 · 756 阅读 · 0 评论 -
Android中native进程内存泄露的调试技巧
Android中native进程内存泄露的调试技巧代码基于Android2.3.x版本Android为Java程序提供了方便的内存泄露信息和工具(如MAT),便于查找。但是,对于纯粹C/C++ 编写的natvie进程,却不那么容易查找内存泄露。传统的C/C++程序可以使用valgrind工具,也可以使用某些代码检查工具。幸运的是,Google的bionic库为我们查找内存泄露提转载 2012-12-19 13:15:00 · 966 阅读 · 0 评论 -
用户态向内核态切换
转: http://blog.youkuaiyun.com/sunnybeike/article/details/6958891转自:http://blog.youkuaiyun.com/sdustliyang/article/details/6458502那么,程序什么时候使用用户栈,什么时候使用内核栈呢?对,系统调用。也就是执行printf、open、read、write执行C语言库函数时,其最转载 2013-09-15 11:26:29 · 2032 阅读 · 0 评论 -
Linux系统下/proc/meminfo详解
"Free," "buffer,""swap," "dirty." What does it all mean? If you said,"something to do with the Summer of '68", you may need a primer on'meminfo'. The entries in the /proc/meminfo can helpexplain w转载 2013-10-15 11:07:23 · 1459 阅读 · 0 评论 -
Low Memory Killer
Low Memory Killer(低内存管理) 对于PC来说,内存是至关重要。如果某个程序发生了内存泄漏,那么一般情况下系统就会将其进程Kill掉。Linux中使用一种名称为OOM(Out Of Memory,内存不足)的机制来完成这个任务,该机制会在系统内存不足的情况下,选择一个进程并将其Kill掉。Android则使用了一个新的机制——Low Memory Killer来完成同样的任务转载 2013-11-17 22:53:35 · 1286 阅读 · 0 评论 -
linux内存分配方法总结--总结的不错
转自:http://blog.chinaunix.net/uid-22028680-id-3968085.html转自:http://www.cnblogs.com/wenhuisun/archive/2013/05/15/3079722.html内存映射结构:1.32位地址线寻址4G的内存空间,其中0-3G为用户程序所独有,3G-4G为内核占有。2.struct转载 2013-11-21 13:27:40 · 1409 阅读 · 0 评论 -
__get_free_pages
已经在没看函数定义前觉得有点奇怪,它怎么是用page_address, 现在知道了,如果分配的页面里面有 __GFP_HIGHMEM 的标志,直接就BUG_ON 了。这说明__get_free_pages是从低端内存分配的, 释放函数用free_page(addr), 而不用 __free_page(page).unsigned long __get_free_pages(gfp_原创 2013-11-26 09:35:09 · 2395 阅读 · 0 评论 -
操作系统内核空间和用户空间的互访问
前面写了很多的文章来说明了这个问题,并且在文章中均举了一些例子,如果为了解决具体问题,那么那些就已经足够了,但是如果想实现一个操作系统,这些就远远不够了。硬件是软件的底层,这是一个前提,硬件是舞台,软件都是舞者,操作系统是应用程序的底层,操作系统是舞台,应用程序是舞者,并且,硬件是操作的系统的舞台,这里操作系统成了舞者,这就是计算机的层次(对于有操作系统的计算机而言,不包括裸机)。在操作系转载 2013-11-26 18:18:48 · 1110 阅读 · 0 评论 -
CONFIG_VMSPLIT_2G
最近看到:CONFIG_VMSPLIT_2G=y # 表示用户和内核各占2G# CONFIG_VMSPLIT_1G is not setCONFIG_PAGE_OFFSET=0x80000000 #内核启始地址如果配置为:CONFIG_VMSPLIT_1G: 1G/3Guser/kernel split所以,这边的配置指的是内核空的大小。原创 2013-11-27 15:42:44 · 2932 阅读 · 0 评论 -
page_address()函数分析--如何通过page取得虚拟地址
由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的。一. x86上关于page_address()函数的定义在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要依赖于不同的平台:首先来看看几个宏的定义:CONFIG_HIGHMEM:顾名思义,就是是否支持高端内存,可以转载 2014-06-05 18:11:26 · 807 阅读 · 0 评论 -
kmap的实现分析
kmap的实现分析kmap/unkmap系统调用是用来映射高端物理内存页到内核地址空间的api函数,他们分配的内核虚拟地址范围属于[PKMAP_BASE,PAGE_OFFSET]即[0xbfe00000,0xc0000000]范围,大小是2M的虚拟空间,为了映射该块虚拟地址,所使用的二级页表的大小刚好是一个物理page的总计是两个pte table(4KB)kmap的调用流程分析:ar转载 2014-06-15 15:23:37 · 1603 阅读 · 0 评论 -
Android内核详解之Low memory killer
Android在内存管理上与linux有些小的区别。其中一个就是引入了Low memory killer .1,引入原因 Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运行速度,当你退出一个程序时,Android并不会立即杀掉它,这样下次再运行该程序时,可以很快的启动。随着系统中保留的程序越转载 2015-03-07 12:50:15 · 1467 阅读 · 0 评论 -
get_user_pages
get_user_pages的意义,这个函数可以锁定用户页面,将之锁定在内存中不被换出,其实这个函数就是靠增加页面的引用计数来实现的,另外一种锁定页面的方式是调用mlock系统调用,但是后者是主动的锁定,并且在页面的基本属性上保证了不被换出,这是用户可以控制的,而前者使用引用计数的方式是用户所不能控制的,它只是有的时候内核在使用该page,由于内核使用而不能被换出,比如内核在执行aio或者bio,...转载 2019-04-24 16:27:36 · 3548 阅读 · 0 评论