Linux内存监控内存泄露和回收内存的方法
从用户使用程式的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统任何的内存。以下就介绍下Linux 内存监控内存泄露和回收内存的方法。 1、Linux 内存监控内存泄漏的定义: 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程式从堆中分配的,大小任意的(内存块的大小能够在程式运行期决定),使用完后必须显示释放的内存。应用程式一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程式必须负责...
Linux内存监控虚拟内存实现机制及容量设定
在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文档中后也要修改页表来映射文档地址。 (1)Linux 内存监控虚拟内存实现机制 Linux 内存监控Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制。 首先内存管理程式通过映射机制把用户程式的逻辑地址映射到物理地址,在用户程式运行时假如发现程式中要用的虚地址没有对应的物理内存时,就发出了请求页需要;假如有空闲的内存可...
VMware下鼠标不能用解决方法
如果你在VMware下安装Linux后碰到鼠标不能用,原因是你安装的鼠标驱动跟你使用的鼠标不一致,很大原因是你安装的时候自己选择了鼠标类型,并且造成错误,一般情况下使用的还是USB鼠标。 解决方法: 1、进入系统后切换到其他控制台,(按ctrl+alt再按F1~F6任意一个;若没反应,按ctrl+alt+空格键再按F1~F6任意一个),进入其他文本控制台。 2、输入setup(用root用户登录) 3、在打开的setup界面里选择mouse configuration,选择generic -3 Butt...
linux grep命令详解
grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的作用,希望对大家有所帮助。 grep -- print lines matching a pattern (将符合样式的该行列出) ◎语法: grep [options] PATTERN [FILE...] grep用以在file内文中比对相对应的部分,或是当没有指定档案时, 由标准输入中去比对。 在预设的情况下,grep会将符合样式的那一行列出。 此外,还有两个程序是grep的变化型,egrep及fgrep。 其中egrep就...
Linux系统线程同步:互斥量(mutex)
互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在 Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始化, 并且在释放内存(free)前需要调用pthread_mutex_destr...
Linux下的动态共享链接库的分析与使用
动态共享库的工作方式与静态链接库不同。对于每个使用静态链接库的应用程序而言,在应用程序中都存在着静态链接库拷贝。但是动态共享库却不是这样的,动态共享库是被所有使用它的应用程序共享的,无论调用一个动态共享库的进程有多少,系统中始终只运行着一个动态共享库,这里动态共享库中“共享”的含义。至于“动态”,则主要强调的是链接发生在什么阶段。对于静态链接库而言,链接过程发生在编译阶段,操作系统在加载程序时不再对程序做任何改变,因此“静态”链接;然而对于使用动态共享库的程序而言,编译器在编译程序时只知道程序 将要使用...
把父类的析构函数定义成虚函数
问:为什么要把父类的析构函数定义成虚函数。 答:否则子类的析构函数可以未被调用,具体代码如下: class A { public: A(){TRACE(\"A()\\n\");}; ~A(){TRACE(\"~A()\\n\");}; }; class B : public A { public: B(){TRACE(\"B()\\n\");}; ~B(){TRACE(\"~B()\\n\");}; }; void CEgDlg::OnButton1() { A * p = (A*)new B() ;...
Copy构造函数的使用
和新手朋友一起来温习一下复制构造函数的基础使用。 Copy构造函数: 1.它是构造函数,只有对象被初始化的时候才会调用构造函数。 2.它的初始目的是把一个已经有的对象复制给新创建的对象。 3.它有时候会被隐式调用。 4.如果不想采用赋值的方试来创建对象,就把Copy构造函数设置为private。 5.如果不想让对象被复制,就把Copy构造函数和赋值操作符(函数)设置为private。 例子: #include \"stdafx.h\" #include iostream using namespace...
关于C++的简介大全
概述 C++,这个词在中国大陆的程序员圈子中通常被读做"C加加",而西方的程序员通常读做"C plus plus",它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 美国ATT贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作"C with Classes")。一开始C...
Linux 文件系统挂装与高层体系结构
对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台。本文讨论Linux内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构。 基本的文件系统体系结构 Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统。例如,read 函数调用可以从指定的文件描述符读取一定数量的字节。read 函数不了解文件系统的类型,比如 ext3 或 NF...
优化Linux系统的硬盘解决磁盘碎片化
在Windows系统中,磁盘碎片是一个常见的问题,如果不注意,系统性能可能被侵蚀。Linux使用第二扩展文件系统(ext2),它以一种完全不同的方式处理文件存储。Linux没有Windows系统中发现的那种问题,这使得许多人认为磁盘碎片化根本不是一个问题。但是,这是不正确的。 所有的文件系统随着时间的推移都趋向于碎片化。Linux文件系统减少了碎片化,但是并没有消除。由于它不经常出现,所以对于一个单用户的工作站来说,可能根本不是问题。然而在繁忙的服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性...
Linux中的静态链接库分析与使用
在C语言的层面上,对代码的重复利用通常是通过库(library)的方式来实现的。传统意义上的库指的是以后缀.a结尾的文件。严格来讲,函数库应当分为两种:静态链接库和动态链接库,也称动态共享库。静态链接库通常是指以.a为后缀的文件,而动态链接库则常常以.so为后缀名。 静态链接库其实就是把一个或多个目标文件(即编译生成的.o文件)归档在一个文件中。此后,当需要使用这个静态库中的某个功能时,将这个静态库与要生成的应用程序链接在一起。 在Linux上平台上最常用的归档工具是GNU的tar,但是要构建静态库却不...