OOM相关

昨天写的差不多了,忘记发,结果不小心手抖把网页给关了......博客园的用户体验还是差了些呀......

------------------------------------------------------------------

进入正题,OOM,即out of memory,也就是内存耗尽,内存用光的意思,即内存溢出,什么时候会造成OOM报错呢

当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时

这里要插句嘴,java中其中一个特性就是他的垃圾回收机制,即当一个对象没有被引用时,他是可以回收的。在我们最开始学java的时候,就被告知这是java的优越性之一,诚然这是没有错的,但是也并不是说java有了这个垃圾回收机制,我们就可以肆意的对内存进行无休止的调用占用,正如《Effective Java》一书中就曾经提到过这个问题,你们认为有了垃圾回收机制就可以解决所有问题了吗,不存在的(当然原话不是这样说的......)

要深入理解OOM,这里就要提到一个概念

内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用。

更多再往底层深入的知识就不再说了,我自己理解也有限,引一篇博文吧:关于OOM的那些事儿

道理很简单,内存泄露的多了,就会造成内存溢出

内存溢出方面,申请资源尽量小,分布去做,缓解内存压力基本上就是我们所能做的

我们更多的是让自身尽量少造成内存泄漏的问题

那么android中何时会造成内存泄露呢,依然引一篇博文吧

Android性能优化之内存泄漏

但是大体上我们可以总结一下,其实说穿了只是要在合适的时候取消引用,又或者说引用的方式要如何调整,就可以尽量去避免这个问题

时间: 2024-08-23 22:17:36

OOM相关的相关文章

Linux内核OOM机制分析

一 应用场景描述 线上一台mongos出现OOM情况,于是花点时间想要详细了解Linux内核的OOM机制原理,便于以后再作分析 $ sudo grep mongos /var/log/messages  Apr 10 15:35:38 localhost sz[32066]: [xxxx] check_mongos.sh/ZMODEM: 211 Bytes, 229 BPS Apr 23 14:50:18 localhost sz[5794]: [xxxxx] mongos/ZMODEM: 29

java中虚引用PhantomReference与弱引用WeakReference(软引用SoftReference)的差别

之前的这篇博客介绍了java中4种引用的差别和使用场景,在最后的总结中提到: "软引用和弱引用差别不大,JVM都是先把SoftReference和WeakReference中的referent字段值设置成null,之后加入到引用队列:而虚引用则不同,如果某个堆中的对象,只有虚引用,那么JVM会将PhantomReference加入到引用队列中,JVM不会自动将referent字段值设置成null".这段总结写的比较仓促,也没有给出实际的例子加以佐证.本文主要是重申下这几种引用的差别,并

手机管理应用研究【3】—— 手机加速篇

欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 说明 在上一篇中介绍了“垃圾清理”,在系统优化中有一个功能往往是与垃圾清理分不开的,那就是“手机加速”.目前流行的管理软件中以及网络上并没有明确的定义什么叫“垃圾清理”什么叫“手机加速”.结合上一篇的“垃圾清理”这里统一做一个在本系列文章中的定义: n 垃圾清理:在本系列文章中认为扫描和清理的是静态内容,包括应用的文件缓存.缩略图.日志等系统或应用创建的文件,这些文件不具有“运行时”特征. n 手机加速:在本系列文

java.lang.OutOfMemoryError:Map failed总结

常见的OOM是以下这几种:1.GC overhead limit exceeded2.Java Heap Space3.Unable to create new native thread4.PermGen Space5.Direct buffer memory6.request {} bytes for {}. Out of swap space?一直自认为不会有超过这个范围的OOM类型出现,没想到最近看到了一个新的OOM的类型,而这次OOM引发了一次严重的故障,整个排查过程是内部一个同事排查

redis-5.0 cluster带腾讯分分彩出售认证及客户端连接

Redis在3.0版腾讯分分彩出售dsluntan.com Q:3393756370 VX:17061863513正式引入redis-cluster集群这个特性.Redis集群是一个提供在多个Redis间节点间共享数据的程序集.Redis集群是一个分布式(distributed).容错(fault-tolerant)的Redis内存K/V服务,集群可以使用的功能是普通单机Redis所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间

基于zookeeper-3.5.5安装hadoop-3.1.2

目录 目录 1 1. 前言 3 2. 缩略语 3 3. 安装步骤 4 4. 下载安装包 4 5. 机器规划 4 6. 设置批量操作参数 5 7. 环境准备 5 7.1. 修改最大可打开文件数 5 7.2. 修改OOM相关参数 6 7.3. 免密码登录设置 6 7.4. 修改主机名 6 7.4.1. 临时修改主机名 6 7.4.2. 永久修改主机名 7 7.4.3. 批量修改主机名 7 7.4.4. 配置/etc/hosts 7 8. 安装建议 8 9. 创建安装用户组和用户 8 10. 安装JD

android 图片加载优化,避免oom问题产生

1,及时回收bitmap,在activity的onstop()和onDestory()里面调用如下代码进行bitmap的回收: // 先判断是否已经回收 if(bitmap != null && !bitmap.isRecycled()){ // 回收并且置为null bitmap.recycle(); bitmap = null; } System.gc(); 2,对oom异常的捕获:出现异常不能让程序就那么崩掉吧,所以对程序中中设计bitmap的操作都要检测oom异常进而进行处理: B

关于android 使用bitmap的OOM心得和解决方案

android开发,从2010年开始学习到现在的独立完成一个app,这漫长的四年,已经经历了很多次bug的折磨,无数次的加班训练.然而,自以为自己已经比较了解android了,却最近在一个项目上,因为oom而折腾了一个周,回到原地,认识了自己的不足,感觉自己是如此的菜鸟呀. 好了,不废话,大家在使用开发android的时候,很少会注意或者意识到释放内存的重要性,因为大家在使用过程中,涉及的图片资源不多,或者比较稳定,来回切换界面,图片也就那么几张或者使用的都是很小的图片,根本不会感觉到图片占用内

异常、堆内存溢出、OOM的几种情况

1.堆内存溢出 [情况一]: Java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环: 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: < jvm-arg>-Xms3062m < / jvm-arg> < jvm-arg>-Xmx3062m < / jvm-arg> [情况二] java.lang.OutOfMemoryError: G