zoukankan      html  css  js  c++  java
  • 32位机器的LowMemory


        今天在和供应商交流的过程中,被严重鄙视了,竟然认为我连“LowMemory”都没有听说过。感觉很郁闷,好歹我也搞过一段时间memory Management,怎么可能连LowMemory都不知道,难道能怪别人发音不标准好不好。
        唉,总之还是因为自己对LowMemory了解不深入哪。

        何为low memory?说到low memory,不得不说memory zone(内存分区)这个概念。
        内存分区,Linux对内存再进行划分,分为不同的分区。内核以struct zone来描述内存分区。通常一个节点分为DMA、Normal和High Memory内存区。(详见http://blog.csdn.net/younger_china/article/details/17556055)
        在32位CPU下寻址范围是有限的,Linux内核定义了下面三个区域:
        (1) DMA内存区:即直接内存访问分区,通常为物理内存的起始16M。主要是供一些外设使用,外设和内存直接访问数据访问,而无需系统CPU的参与; 0x00000000 -  0x00999999 (0 - 16 MB) 
        (2) Normal内存区:从16M到896M内存区;0x01000000 - 0x037999999 (16 - 896 MB) - size: 880MB
        (3) HighMemory内存区:896M以后的内存区;0x038000000 - <硬件特定> 

        那么,到底何为low memory???
        LowMem区(也叫NORMAL ZONE)共880MB,并且是固定不能变的(除非使用hugemem内核),对于高负荷的系统,可能因为LowMem使用不好而触发了OOM Killer机制。因为内存分配是一个连续的区域,在此时,如果LowMem里存在很多碎片或者LowFree太少,此时无法分配到一块连续的内存区域,就触发了OOM Killer。

       
  • 相关阅读:
    用icas下载文件报错
    jboss7.1.1相关error及解决办法
    Base-64编码介绍
    上传文件路径问题
    ZooKeeper安装(Windows)
    DBCP连接池配置参数说明
    Linux普通用户使用sudo权限启停apache服务
    线程池中的队列
    java线程池原理及实现方式
    https基础流程
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624515.html
Copyright © 2011-2022 走看看