OOM

【Google官方教程】第二课:在非UI线程处理Bitmap

試著忘記壹切 提交于 2019-11-28 13:45:20
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/88344 译者: Ryan Hoo 来源: https://developer.android.com/develop/index.html 译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程。因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助。 本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图片,同时避免让人头疼的OOM(Out Of Memory)。 ------------------------------------------------------------------------------------- 译文: 在 高效地加载Bitmap 中,我们讨论了 BitmapFactory.decode* 系列方法,如果源数据来自硬盘或者网络(或者除内存之外的来源),是不应该在主UI线程执行的。这是因为读取这样的数据所需的加载时间是不确定的,它依赖于多种因素(从硬盘或网络的读取速度、图片的大小、CPU的功率等等)。如果这些任务里面任何一个阻塞了UI线程

【构建Android缓存模块】(一)吐槽与原理分析

眉间皱痕 提交于 2019-11-28 13:45:05
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/93285 摘要 : 在我翻译的 Google官方系列教程 中,Bitmap系列由浅入深地介绍了如何正确的解码Bitmap,异步线程操作以及使用Fragments重用等技术,并且在最后给出了非常强大的独家秘笈: Bitma pFun ,让猿媛们得以一窥究竟Google的攻城师们是如何高屋建瓴地秒杀OOM的。 前言 在下 载到 B itma pFun .rar 这个 神圣的压缩包以后,我是双手颤抖, 似乎是打开上古秘藏一般, 心情激动导致久久不能自已。我还记得那天上海下着小雨,我当时霍然起身,伫立在23楼的窗台,仰着头向江水对岸的东方明珠望去,似乎这样我郁积已久的眼泪就不能掉下来。 说到这里,Ryan又暗自抹了一把眼泪。短暂地忘记了过去的黑暗时光,那一个漫长的被OOM的淫威所折磨的盛夏。。。 最 后在Boss诧异的目光中,我回到办公桌,按捺着内心汹涌的情绪波动,然后小心翼翼的打开 BitmapFun.rar 。当那些在洪荒时代就活跃在Android平台的大师们书写的篇章呈现在我眼前时,我的表情与阿宝从师父手里得到 Drag on Scroll 时一般,永久的定格在了极度天真的期待与眼角一抽一抽 的状态。

【Google官方教程】第一课:高效地加载大Bitmap(位图)

只愿长相守 提交于 2019-11-28 13:44:49
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/88242 译者: Ryan Hoo 来源: https://developer.android.com/develop/index.html 译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程。因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助。 本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图片,同时避免让人头疼的OOM(Out Of Memory)。 ------------------------------------------------------------------------------------- 译文: 图像可以有各种各样的形状和大小。在很多情况下,它们往往会比典型的应用UI界面所需要的更大。例如,系统的Gallery程序展示使用Android设备的摄像头拍摄的照片的分辨率往往要远高于设备的屏幕密度。 考虑到你所使用的内存有限,理想的情况是你只会想加载一个分辨率相对较低的图片到内存中来。低分辨率版本的图片与相应UI组件的尺寸应该是相匹配的

TThreadedSelectorServer介绍及Direct Memory OOM分析

左心房为你撑大大i 提交于 2019-11-27 16:07:18
一、TThreadedSelectorServer线程模型: 该服务会启动1个AcceptThread, 2个SelectorThread(默认为2个,可设置),一个woker线程池(池的大小可设置), 一个AcceptThread执行accept操作,将accept到的Transport交给SelectorThread线程, AcceptThread中有个balance均衡器分配到SelectorThread; SelectorThread执行read,write操作,read到一个 FrameBuffer (封装了方法名,参数,参数类型等数据,和读取写入,调用方法的操作)交给WorkerProcess线程池执行方法调用。 二、SelectorThread中FrameBuffer读取的过程 每个SelectorThread线程 使用 FrameBuffer 来读取数据。 org.apache.thrift.server.AbstractNonblockingServer.FrameBuffer: private boolean internalRead() { try { if (trans_.read(buffer_) < 0) { return false; } return true; } catch (IOException e) { LOGGER.warn("Got

【Google官方教程】前言:高效的Bitmap显示

感情迁移 提交于 2019-11-27 09:06:36
转 载 声明: Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/88153 译者: Ryan Hoo 来源: https://developer.android.com/develop/index.html 译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程。因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助。 本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图片,同时避免让人头疼的OOM(Out Of Memory)。 ------------------------------------------------------------------------------------- 译文: 这一系列教程覆盖了一些用于处理和加载 Bitmap (位图)对象的常用技术,在某种程度上,使用这些技术可以使你的用户接口(UI)组件保持良好的响应性能,并且避免超出程序内存限制。如果你不小心翼翼,这些位图对象可以迅速消耗你的可用内存,并引起严重的错误而导致程序崩溃: java.lang.OutofMemoryError: bitmap size exceeds