懂内存管理的进来
在编译内核的时候,根据资料上说,0~1G的时候可以不用打开高端内存的宏,1~4G的时候就可以打开,而我的内存是1G的,按道理说高端内存的宏可开可不开。打开的时候,用cat /proc/meminfo可以看到内存的总大小为1G:
相关log:
当不打开高端内存的宏的时候:
相关log:
当不打开高端内存的时候,总内存只有895M,可我的内存是1G的,这是不是以为着我还有128M的内存没有使用呢?
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
# cat /proc/meminfo
MemTotal: 1003916 kB
相关log:
<6>[ 0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
<6>[ 0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
<6>[ 0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:887Mb
<6>[ 0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:227326
<7>[ 0.000000] initial memory mapped : 0 - 02400000
<6>[ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000
<7>[ 0.000000] 0000000000 - 0000400000 page 4k
<7>[ 0.000000] 0000400000 - 0037400000 page 2M
<7>[ 0.000000] 0037400000 - 00377fe000 page 4k
<7>[ 0.000000] kernel direct mapping tables up to 377fe000 @ 7000-c000
<6>[ 0.000000] RAMDISK: 07dfa000 - 08000000
<5>[ 0.000000] 118MB HIGHMEM available.
<5>[ 0.000000] 887MB LOWMEM available.
<6>[ 0.000000] mapped low ram: 0 - 377fe000
<6>[ 0.000000] low ram: 0 - 377fe000
<4>[ 0.000000] Zone PFN ranges:
<4>[ 0.000000] DMA 0x00000001 -> 0x00001000
<4>[ 0.000000] Normal 0x00001000 -> 0x000377fe
<4>[ 0.000000] HighMem 0x000377fe -> 0x0003ee00
<4>[ 0.000000] Movable zone start PFN for each node
<4>[ 0.000000] early_node_map[3] active PFN ranges
<4>[ 0.000000] 0: 0x00000001 -> 0x00000098
<4>[ 0.000000] 0: 0x00000100 -> 0x00000e00
<4>[ 0.000000] 0: 0x00001000 -> 0x0003ee00
<7>[ 0.000000] On node 0 totalpages: 256919
<7>[ 0.000000] free_area_init_node: node 0, pgdat c1af1800, node_mem_map c20c9020
<7>[ 0.000000] DMA zone: 32 pages used for memmap
<7>[ 0.000000] DMA zone: 0 pages reserved
<7>[ 0.000000] DMA zone: 3447 pages, LIFO batch:0
<7>[ 0.000000] Normal zone: 1744 pages used for memmap
<7>[ 0.000000] Normal zone: 221486 pages, LIFO batch:31
<7>[ 0.000000] HighMem zone: 237 pages used for memmap
<7>[ 0.000000] HighMem zone: 29973 pages, LIFO batch:7
......
<6>[ 0.000000] Initializing HighMem for node 0 (000377fe:0003ee00)
<6>[ 0.000000] Memory: 1001440k/1030144k available (6484k kernel code, 26236k reserved, 2852k data, 404k init, 120840k highmem)
<6>[ 0.000000] totalram_pages:1001440k Mem:1001440k
<6>[ 0.000000] virtual kernel memory layout:
<6>[ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB)
<6>[ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB)
<6>[ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB)
<6>[ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB)
<6>[ 0.000000] .init : 0xc1b1f000 - 0xc1b84000 ( 404 kB)
<6>[ 0.000000] .data : 0xc185527d - 0xc1b1e484 (2852 kB)
<6>[ 0.000000] .text : 0xc1200000 - 0xc185527d (6484 kB)
......
当不打开高端内存的宏的时候:
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_HIGHMEM is not set
# cat /proc/meminfo
MemTotal: 892364 kB
相关log:
<6>[ 0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
<6>[ 0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
<6>[ 0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:895Mb
<6>[ 0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:229139
<4>[ 0.000000] Warning only 895MB will be used.
<4>[ 0.000000] Use a HIGHMEM enabled kernel.
<7>[ 0.000000] initial memory mapped : 0 - 02400000
<6>[ 0.000000] init_memory_mapping: 0000000000000000-0000000037f13000
<7>[ 0.000000] 0000000000 - 0000400000 page 4k
<7>[ 0.000000] 0000400000 - 0037c00000 page 2M
<7>[ 0.000000] 0037c00000 - 0037f13000 page 4k
<7>[ 0.000000] kernel direct mapping tables up to 37f13000 @ 7000-c000
<6>[ 0.000000] RAMDISK: 07dfa000 - 08000000
<5>[ 0.000000] 895MB LOWMEM available.
<6>[ 0.000000] mapped low ram: 0 - 37f13000
<6>[ 0.000000] low ram: 0 - 37f13000
<4>[ 0.000000] Zone PFN ranges:
<4>[ 0.000000] DMA 0x00000001 -> 0x00001000
<4>[ 0.000000] Normal 0x00001000 -> 0x00037f13
<4>[ 0.000000] Movable zone start PFN for each node
<4>[ 0.000000] early_node_map[3] active PFN ranges
<4>[ 0.000000] 0: 0x00000001 -> 0x00000098
<4>[ 0.000000] 0: 0x00000100 -> 0x00000e00
<4>[ 0.000000] 0: 0x00001000 -> 0x00037f13
<7>[ 0.000000] On node 0 totalpages: 228522
<7>[ 0.000000] free_area_init_node: node 0, pgdat c1af1780, node_mem_map c20c1020
<7>[ 0.000000] DMA zone: 32 pages used for memmap
<7>[ 0.000000] DMA zone: 0 pages reserved
<7>[ 0.000000] DMA zone: 3447 pages, LIFO batch:0
<7>[ 0.000000] Normal zone: 1759 pages used for memmap
<7>[ 0.000000] Normal zone: 223284 pages, LIFO batch:31
......
<6>[ 0.000000] Memory: 888788k/916556k available (6483k kernel code, 25300k reserved, 2852k data, 400k init, 0k highmem)
<6>[ 0.000000] totalram_pages:888788k Mem:888788k
<6>[ 0.000000] virtual kernel memory layout:
<6>[ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB)
<6>[ 0.000000] vmalloc : 0xf8713000 - 0xfff13000 ( 120 MB)
<6>[ 0.000000] lowmem : 0xc0000000 - 0xf7f13000 ( 895 MB)
<6>[ 0.000000] .init : 0xc1b1f000 - 0xc1b83000 ( 400 kB)
<6>[ 0.000000] .data : 0xc1854e8d - 0xc1b1e084 (2852 kB)
<6>[ 0.000000] .text : 0xc1200000 - 0xc1854e8d (6483 kB)
......
当不打开高端内存的时候,总内存只有895M,可我的内存是1G的,这是不是以为着我还有128M的内存没有使用呢?
...全文
相关推荐
一文秒懂C语言/C++内存管理(推荐)
"这篇文章主要介绍了C语言和C++中的内存管理,强调了内存管理的重要性以及不当使用可能带来的问题。文章从内存的独立性出发,解释了每个程序在内存中的独立区域,然后详细阐述了内存四区的概念,即栈区、堆区
Java十分钟速懂知识点?引用
"Java十分钟速懂知识点——引用与内存管理"在Java编程中,理解和掌握内存管理和引用的概念至关重要,因为它们直接关系到程序的性能和稳定性。本文将深入探讨Java中的引用以及它与内存泄露的关系
pio的jar包使用例子,有详细注释一看就懂
**注意事项**:使用PIO时,需要注意内存管理和文件流的关闭,以防止资源泄漏。对于大文件,使用流式处理可以避免加载整个文件到内存中。
python一本通超详细必懂
总的来说,Python之所以能成为一门“超详细必懂”的编程语言,是因为它在强调简洁和易用的同时,不失为一种功能强大的工具。
DotNet工程师必懂的20道题
### DotNet工程师必懂的20道题#### 1. 面向对象的思想主要包括什么?


