您现在的位置:首页 --> 查看专题: 内存
关于虚拟内存,物理内存,我有蛮多概念都是很模糊的,今天下午看了一下虚拟内存,也算是有了一点小收获,本文就针对为什么需要有虚拟内存的理解写下来。
但凡初次接触MongoDB的人,无不惊讶于它对内存的贪得无厌,至于个中缘由,我先讲讲Linux是如何管理内存的,再说说MongoDB是如何使用内存的,答案自然就清楚了。
ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n | less解析一下:ps 都知道,是linux,unix显示进程信息的, -e 是显示所有进程, -o是定制显示信息的格式rss: resident set size, 表示进程占用RAM(内存)的大小,单位是KBpmem: %M, 占用内存的百分比 pcpu:%C,占用cpu的百分比vsize: 表示进程占用的虚拟内存的大小,KBargs:进程名(command) sort命令对ps结果进行排序-k 1 :按第一个参数 rss进行排序-r:逆序-n:numeric,按数...
这是因为对于Hashtable来说, 定义它的时候, 不可能一次性分配足够多的内存块, 来保存未知个数的元素, 所以PHP会在初始化的时候, 只是分配一小部分内存块给HashTable, 当不够用的时候再RESIZE扩容,而Hashtable, 只能扩容, 不会减少, 对于上面的例子, 当我们存入100个变量的时候, 符号表不够用了, 做了一次扩容, 而当我们依次unset掉这100个变量以后, 变量占用的内存是释放了(118848
这篇文章主要是从原理, 手册和源码分析在PHP中查询MySQL返回大量结果时, 内存占用的问题, 同时对使用MySQL C API也有涉及. 昨天, 有同事在PHP讨论群里提到, 他做的一个项目由于MySQL查询返回的结果太多(达10万条), 从而导致PHP内存不够用. 所以, 他问, 在执行下面的代码遍历返回的MySQL结果之前, 数据是否已经在内存中了?
如果你是服务器管理员,MRTG会为你做很多事情,如网络流量监控,CPU使用情况及温度监控,内存监控,Web连接数量监控等等,当然,并不是说MRTG有多强大,他也是依赖于snmp服务,也有很多人更喜欢高级点的cacti,但MRTG优点还是很多的,这里就介绍下使用mrtg来监视服务器的性能及状态.
我们正在开发的类数据库系统有一个内存模块,出现了一个疑似”内存泄露”问题,现象如下:内存模块的内存释放以后没有归还操作系统,比如内存模块占用的内存为10GB,释放内存以后,通过TOP命令或者/proc/pid/status查看占用的内存有时仍然为10G,有时为5G,有时为3G, etc,内存释放的行为不确定。 首先说一下内存模块的内存管理机制。我们的内存管理很简单,使用全局的定长内存池,每一个内存块为64KB,如果申请的内存小...
Java在运行时,可以根据声明周期大致把内存分为两部分:与JVM声明周期一致的内存,与线程生命周期一致的内存。根据Java虚拟机规范第二版,Java在运行时内存可以分为以下6个部分:PC计数器,栈,堆,方法区,运行时常量池,本地方法栈 。
直译是虚拟内存,对于WINDOWS下的用户,直观的感受是,在硬盘上开辟一片区域当内存用。而LINUX下的用户,直观感受是,一个进程的内存占用,分虚拟内存与物理内存。虚拟内存的作用,个人理解,主要有几个:(1)简化开发,每个进程都可以认为自己占有整个内存,这对多任务系统很重要,早期有些系统,甚至需要使用相对地址,再根据代码载入内存的基准地址,算出真正要访问哪个内存地址(2)利用多级存储系统,把硬盘或别的存储介...
这是一个通用的内存管理库,可以代替new delete之类。内存管理主要关注两点,一是分配、释放的速度,二是内存的利用率,也就是内存碎片问题。这两个目标是冲突的,不同的内存管理算法在两者之间取不同的平衡点为了提高分配、释放的速度,多核计算机上,主要做的工作是避免所有核同时在竞争内存,常用的做法是内存池,简单来说就是批量申请内存,然后切割成各种长度,各种长度都有一个拉链,申请、释放都只要在链表上操作,可以...
Hugepages是从Linux kernal 2.6后被引入的,其目的是使用更大的memory page size以适应越来越大的系统内存。 计算机硬件的发展速度太快了,所以操作系统的一些配置也要相应的随之改变。在Linux下,默认的page size大小为4k。显然对于现在的SGA比较大的数据库系统来说,4k的page size有点太小了。
这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。
在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux下查看内存使用情况的free命令.
所谓内存越界(Heap Corruption),就是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常。越界访问是非常常见的一种黑客手段。相关文章:善用消费者的“无知” 营销做到“无敌” 在工作中接触不少中小企业的老板,因而常听到他们用“这个行业市场很混乱,消费者很不理性”的理由,来说明企业的销售做不好的缘故。每逢“3.15”,总有不少企业在媒体上叫卖诚信,认为博得消费者信任是企业宣...
今天和倩女幽魂的同事讨论一个问题:他们的游戏 client 中,有大量策划填写的表格直接导入 lua state 中的大量数据。大约有 100M 以上。这样,如果玩家在一台机器上启动多个 client ,就会占用大量的内存。而这些数据,一旦加载进 lua ,就不会再修改,且每个 client 中数据都是一致的,这是一种浪费。问题是:如何利用进程间的数据共享,在多开 client 时节省这些空间。(同时也可以加快开第二个 client 的启动速度)
我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。 这里要提到一个很重要的概念,内存的延迟分配。Linux内核在用...
1. 单个程序使用的最大的内存空间的大小收到内存指针的大小的限制,对于32位机,指针是4字节类型,最大标识4G的内存空间,所以32位机单个程序使用的内存空间不可能超过4G,实际上具体多少?我也不知道2. 对于windows来讲,虽然好像每个程序都可以使用接近(可能差的比较远点儿)4G的内存空间,但是总的虚拟内存的大小也是有一个限制的,在“我的电脑”=》属性=》高级=》性能(设置)=》高级=》虚拟内存 这里可以设置,...
分析进程内存分配情况,解决程序性能问题。如我的mysql进程内存分配情况如下:
近3天十大热文
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] android 开发入门
- [59] 【社会化设计】自我(self)部分――欢迎区
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成
赞助商广告