首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 开发绕不过坑:你 Bitmap 究竟占多大内存

另外,本文依据主要来自 android 5.0 源码,其他版本可能略有出入。文章难免疏漏,欢迎指正~ 1、占了多大内存?...吃内存呗,时不时还给你来个 OOM 冲冲喜,让你每一天过得有滋有味(真是没救了)。那每次工程里面增加一张图片时候,我们都需要关心这货究竟要占多大坑,占多大呢?...---- 2、给我一张图我告诉你占多大内存 每次都问 Bitmap 你到底多大啦。。感觉怪怪,毕竟我们不能总是去问,而不去搞清楚它为嘛介么大吧。能不能给它算个命,算算它究竟多大呢?...等等,请收起你口水,Android 官方并不支持这个。是的,你没看错,官方并不支持。...---- 看来这个法子还真行啊,占用内存一下小很多。不过由于官方并未做出支持,因此这个方法有诸多限制,比如不能在 xml 中直接配置,,生成 Bitmap 不能用于构建 Canvas 等等。

3.3K111
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊 Linux 内存统计

点击上方“小强进阶之路”,选择“星标”公众号 优质文章,及时送达 预计阅读时间: 18分钟 写在前面 本文主要分析 Linux 系统内存统计一些指标以及进程角度内存使用监控一些方法。...Linux 内存管理从物理内存管理到虚拟内存管理涉及概念和统计项实在太多,本文从实用和系统运维角度出发,只列举一些最实用统计。...最上面新版本系统输出中有一个available项目表示可用内存,值小于 free + buff/cache,内核 3.14 之后支持该特性(虽然也不是绝对意义上精确可用内存大小,囧)。...内核在 2.6 以前就引入了增强LRU算法来解决朴素LRU算法完全不考虑使用频率问题。具体Active 链表和Inactive 链表使用详情请参阅其他资料。...最新内核文档提到了要加smaps_rollup这个统计,支持Pss_Anon、Pss_File和Pss_Shmem三个分类统计,这个在进程级别看,用到内存就很清晰了。

6.1K40

HDFS中内存存储支持(七)概述

文章目录 前言 历史文章 1.1 HDFS中内存存储支持 1.1.1 介绍 1.1.2 配置内存存储支持 1.1.2.1 设置能够使用内存空间 1.1.2.2DataNode设置基于内存存储 1.1.3...(六)概述 [hadoop3.x]HDFS中内存存储支持(七)概述 1.1 HDFS中内存存储支持 1.1.1 介绍 l HDFS支持写入由DataNode管理堆外内存 l DataNode异步地将内存中数据刷新到磁盘...磁盘,可以在DataNode进程重新启动时保持更好数据持久性 下面的设置可以在大多数Linux发行版上运行,目前不支持在其他平台上使用RAM磁盘。...1.1.3 选择tmpfs(VS ramfs) l Linux支持使用两种类型RAM磁盘-tmpfs和ramfs l tmpfs大小受linux内核限制,而ramfs可以使用所有系统可用内存 l...但是,许多对性能要求很高应用运行时都禁用内存磁盘交换 l HDFS当前支持tmpfs分区,而对ramfs支持正在开发中 1.1.4 挂载RAM磁盘 l 使用Linuxmount命令来挂载内存磁盘

1.5K10

Linux吃掉我内存

而当我们使用free命令查看Linux系统内存使用情况时,会 发现内存使用一直处于较高水平,即使此时系统并没有运行多少软件。...这正是Windows和Linux内存管理上区别,乍一看,Linux系统吃掉我们内存Linux ate my ram),但其实这也正是其内存管理特点。 ?...而Linux会充分利用这些空闲内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存...因此,可以看出,buffers/cached真是百益而无一害,真正坏处可能让用户产生一种错觉——Linux内存!...其实不然,Linux并没有吃掉你内存,只要还未使用到交换分区,你内存所剩无几时,你应该感到庆幸,因为Linux缓存了大量数据,也许下一次你就从中受益!

96950

Linux 内存分页管理

内存提供存储空间,除了能满足内核运行需求,还通常能支持运行中进程。即使进程所需空间超过内存空间,内存空间也可以通过少量拓展来弥补。换句话说,内存存储能力,和计算机运行状态数据总量相当。...有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。

1.1K30

HDFS中内存存储支持(七)概述

1.1 HDFS中内存存储支持 1.1.1 介绍 l HDFS支持写入由DataNode管理堆外内存 l DataNode异步地将内存中数据刷新到磁盘,从而减少代价较高磁盘IO操作,这种写入称之为懒持久写入...1.1.2 配置内存存储支持 接下来,我们来了解下在HDFS中使用该功能,需要有哪些操作。...RAM磁盘,可以在DataNode进程重新启动时保持更好数据持久性 下面的设置可以在大多数Linux发行版上运行,目前不支持在其他平台上使用RAM磁盘。...1.1.3 选择tmpfs(VS ramfs) l Linux支持使用两种类型RAM磁盘-tmpfs和ramfs l tmpfs大小受linux内核限制,而ramfs可以使用所有系统可用内存 l...但是,许多对性能要求很高应用运行时都禁用内存磁盘交换 l HDFS当前支持tmpfs分区,而对ramfs支持正在开发中 1.1.4 挂载RAM磁盘 l 使用Linuxmount命令来挂载内存磁盘

1.6K30

Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配内存 )

文章目录 一、Linux 内核 动态分配内存 系统接口函数 二、统计输出 vmalloc 分配内存 一、Linux 内核 动态分配内存 系统接口函数 ---- Linux 内核 " 动态分配内存 "...是通过 " 系统接口 " 实现 , 下面介绍几个重要 接口函数 ; ① 以 " 页 " 为单位分配内存 : alloc_pages , __get_free_page ; ② 以 " 字节 " 为单位分配..." 虚拟地址连续内存块 " : vmalloc ; ③ 以 " 字节 " 为单位分配 " 物理地址连续内存块 " : kmalloc ; 注意 该 " 物理地址连续内存块 " 是以 Slab 为中心...; 二、统计输出 vmalloc 分配内存 ---- 执行 grep vmalloc /proc/vmallocinfo 命令 , 可以统计输出 通过 vmalloc 函数分配 " 虚拟地址连续内存

5.1K30

Linux内存分页管理

内存提供存储空间,除了能满足内核运行需求,还通常能支持运行中进程。即使进程所需空间超过内存空间,内存空间也可以通过少量拓展来弥补。换句话说,内存存储能力,和计算机运行状态数据总量相当。...有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。

1.4K10

Linux内存分页管理

内存提供存储空间,除了能满足内核运行需求,还通常能支持运行中进程。即使进程所需空间超过内存空间,内存空间也可以通过少量拓展来弥补。换句话说,内存存储能力,和计算机运行状态数据总量相当。...有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。

1.3K20

Linux中进程内存与cgroup内存统计

Linux内核,对于进程内存使用与Cgroup内存使用统计有一些相同和不同地方。...进程内存统计 一般来说,进程使用内存主要有以下几种情况: (1)用户空间匿名映射页(Anonymous pages in User Mode address spaces),比如调用malloc分配内存...,以及使用MAP_ANONYMOUSmmap;当系统内存不够时,内核可以将这部分内存交换出去; (2)用户空间文件映射页(Mapped pages in User Mode address spaces...实际上,进程使用共享内存,也是算到file_rss,因为共享内存基于tmpfs。...小结 (1)进程rss与cgroup rss区别 进程RSS为进程使用所有物理内存(file_rss+anon_rss),即Anonymous pages+Mapped apges(包含共享内存

2.5K30

4 个使用频率 超高 Linux 监控工具 ,你值得拥有

下面是 Linux 下 4 个日常使用率非常高监控工具,可以帮助我们准确快速诊断系统问题。 ? 1. iotop ? ? ? ?...iostat 命令也是查看 I/O 状态,但他监控是系统级别的 I/O 情况,而 iotop 监控是进程级别的,可以监控到哪一个进程使用 I/O 信息。 ? 2. htop ? ? ? ?...htop 是传统 top 增强版,具有更好视觉效果,更容易理解当前系统状况。 可以清楚看到 CPU 每个核儿使用状况,不像 top 那样隐晦。 同样,内存使用情况也很清晰。...不仅有传统百分比数据,还使用了条形图来显示CPU和内存度量指标,可读性比 top 好了很多。 而且操作也更加便利,例如终止进程可以不用输入进程ID,还可以一次终止多个进程。...Monit 是一个非常灵活工具,有很多种配置方式,支持不同类型阈值和性能告警。 Monit 允许对进程、端口、文件等目标进行监控,并且可以设置动态告警模式。

53530

Linux 是如何管理内存

这是Java建设者第106篇原创文章 Linux 内存管理模型非常直接明了,因为 Linux 这种机制使其具有可移植性并且能够在内存管理单元相差不大机器下实现 Linux,下面我们就来认识一下 Linux...当两个用户运行在相同程序中,例如编辑器(editor),那么就会在内存中保持编辑器程序代码两个副本,但是这种方式并不高效。Linux 系统支持共享文本段作为替代。...Linux 内存管理实现 内存管理系统是操作系统最重要部分之一。从计算机早期开始,我们实际使用内存都要比系统中实际存在内存多。...下面我们就正式探讨一下什么是 虚拟内存 虚拟内存抽象模型 在考虑 Linux 用于支持虚拟内存方法之前,考虑一个不会被太多细节困扰抽象模型是很有用。...物理和虚拟寻址模式 大多数多功能处理器都支持 物理地址模式和虚拟地址模式概念。物理寻址模式不需要页表,并且处理器不会在此模式下尝试执行任何地址转换。Linux 内核被链接在物理地址空间中运行。

2.3K20

linux 虚拟内存作用?

虚拟内存作用 利用磁盘起到缓存作用,提高进程访问磁盘速度。 虚拟内存可以为进程提供独立内存空间,并通过动态链接库共享内存。...虚拟内存可以控制进程对物理内存访问,隔离权限,提高系统安全性, 缓存 虚拟内存是使用内存空间,同时将磁盘上访问频发加载到内存,来增快访问速度,使得占用很小内存空间,看起来很大。...目前linux系统,采用四层页表结构页表结构,每个9位,最低12位作为偏移量。...总 虚拟内存可以结合磁盘和物理内存优势为进程提供看起来速度足够快并且容量足够大存储; 虚拟内存可以为进程提供独立内存空间并引入多层页表结构将虚拟内存翻译成物理内存,进程之间可以共享物理内存减少开销...,也能简化程序链接、装载以及内存分配过程; 虚拟内存可以控制进程对物理内存访问,隔离不同进程访问权限,提高系统安全性;

3.5K20

Linux 内存管理水位控制

分区页框分配器之水位 在讲分区页框分配器分配内存时候,进入伙伴算法前用函数zone_watermark_fast(),来根据水位来判断当前内存情况。...为什么需要设置每个zone保留内存呢,lowmem_reserve作用是什么?...我们知道内核在分配内存时,会按照 HIGHMEM->NORMAL->DMA 方向进行遍历,如果当前Zone分配失败,就会尝试下一个低级Zone。...这就有一个问题,来自 HIGHMEM Zone 请求可能会耗尽 NORMAL Zone 内存,最终结果就是 NORMAL Zone 无内存提供给内核正常分配。...pages present:表示当前zone在去掉第一阶段kernel reserve内存之后剩下pages managed:表示当前zone去掉初始化完成以后所有的kernel reserve内存剩下

1.5K20
领券