内存溢出

检测内存泄漏

左心房为你撑大大i 提交于 2019-12-04 15:07:04
1.静态分析工具-Lint 检查内存泄漏 Android Studio 自带的工具,使用方式 Analyze -》Inspect Code 然后选择想要扫面的区域 2.LeakCanary工具 3.Android Monitor 内存溢出和内存泄漏的区别 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。 来源: https://www.cnblogs.com/acg88688/p/11870578.html

android 内存优化 性能优化

大兔子大兔子 提交于 2019-12-04 12:42:03
最近做一个android 的应用程序 总是出现内存高 和cpu高的问题困扰了好多天。 下面为自己从网上总结的和自己找到的问题。 1. WebView 控件: 使用了 WebView 控件一定要注意清理缓存 destroy() 方法,但之前必须调用 removeAllViews() 要不然有时出错 myWebView.removeAllViews(); myWebView.destroy(); 2. 线程 在退出活动窗口时一定要注意开启的线程是否已经关闭,可以在debug查看线程的开启情况。 如果只是刷新Ui线程 建议不用线程可以使用 Handler 来刷新 方法如下。这种方法只能做简单的操作,复杂操作建议使用线程。 private Handler _ui_handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0://下面你可以写你需要处理的代码 _ui_handler .sendEmptyMessageDelayed(0,1000)//1000 为延时发送的时间 单位是毫秒 break; } } } 3 sqlite 使用sqlite是一定要注意 关闭当前指针 和数据库连接 下面为注意内存溢出的问题 http://rayleeya

关于tomcat内存溢出

。_饼干妹妹 提交于 2019-12-04 09:17:40
今天在tomcat加了一个项目,重启tomcat后发现所有的项目都不能访问了,查了日志后发现内存溢出,怀疑是tomcat设置的内存太小了,修改catalina.sh 中的 JAVA_OPTS="$JAVA_OPTS -server -Xms3550m -Xmx3550m -XX:PermSize=1024M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m" 将内存加大之后重启tomcat就解决了问题 来源: https://www.cnblogs.com/shenzhi/p/11852121.html

JVM内存溢出处理方法

半腔热情 提交于 2019-12-03 21:13:06
OOM(Out of Memory)异常常见有以下几个原因: 1)老年代内存不足:java.lang.OutOfMemoryError:Javaheapspace 2)永久代内存不足:java.lang.OutOfMemoryError:PermGenspace 3)代码bug,占用内存无法及时回收。 OOM在这几个内存区都有可能出现,实际遇到OOM时,能根据异常信息定位到哪个区的内存溢出。 可以通过添加个参数-XX:+HeapDumpOnOutMemoryError,让机器在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析。 JAVA_OPTS="-server -Xms512m -Xmx2g -XX:+UseG1GC -XX:SurvivorRatio=6 -XX:MaxGCPauseMillis=400 -XX:G1ReservePercent=15 -XX:ParallelGCThreads=4 -XX: ConcGCThreads=1 -XX:InitiatingHeapOccupancyPercent=40 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:../logs/gc.log" 4、设置堆内存最小和最大值,最大值参考历史利用率设置 5、设置GC垃圾收集器为G1 6、启用GC日志,方便后期分析 来源

JVM 线上故障排查基本操作 (转)

人盡茶涼 提交于 2019-12-03 10:25:43
前言   对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。楼主同样也遇到过这些问题,那么,遇到这些问题该如何解决呢?   首先,出现问题,肯定要先定位问题所在,然后分析问题原因,再然后解决问题,最后进行总结,防止下次再次出现。   本文的排查环境是 Linux。 CPU 飚高 问题:线上 CPU 飚高问题大家应该都遇到过,那么如何定位问题呢? 思路 :首先找到 CPU 飚高的那个 Java 进程 ,因为你的服务器会有多个 JVM 进程。然后找到那个进程中的 “ 问题线程 ”,最后根据 线程堆栈信息 找到问题代码。最后对代码进行排查。 如何 操作 呢? 通过 top 命令找到 CPU 消耗最高的进程,并记住进程 ID。 再次通过 top -Hp [进程 ID] 找到 CPU 消耗最高的线程 ID,并记住线程 ID. 通过 JDK 提供的 jstack 工具 dump 线程堆栈信息到指定文件中。具体命令:jstack -l [进程 ID] >jstack.log。 由于刚刚的线程 ID 是十进制的,而堆栈信息中的线程 ID 是16进制的,因此我们需要将10进制的转换成16进制的,并用这个线程 ID 在堆栈中查找。使用 printf "%x\n" [十进制数字] ,可以将10进制转换成16进制

Java内存溢出的详细解决方案

ぐ巨炮叔叔 提交于 2019-12-03 05:07:14
一、内存溢出类型 1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它 和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者 tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能 出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了

Android应用开发之(你必须知道的“避免内存溢出图片处理方案”)

给你一囗甜甜゛ 提交于 2019-12-03 04:09:37
今天给大家分享一些图片处理常用技术方案,Android应用开发的朋友必须要了解呀! 众所周知在Android应用开发中在对图片处理时,稍有不慎就会出现以下异常: java.lang.OutofMemoryError: bitmap size exceeds VM budget. 以下几点是加载Bitmap时需要谨慎对待的原因: 通常移动设备的系统资源有限,Android设备会给每个应用分配16M的内存空间。 Android的兼容性定义文件(CDD)中第3.7节。提供了虚拟机的兼容性所需的各种屏幕尺寸和密度及最低的应用程序的内存。优化应用程序应参考这个最小的内存限制。然而,许多厂商的Android设备的系统会较高的限制配置。 Bitmap会占用大量的内存,尤其是带有丰富的图像的应用,像照片管理等应用。例如, 在Galaxy Nexus相机拍照的最高的为2592x1936像素(5百万像素)。如果使用bitmap 配置是ARGB_8888(默认从Android2.3起),那么这个图片加载到内存需要大约19MB的内存(2592*1936*4个字节),在某些设备上会立即耗尽应用程序的内存导致异常发生。 Android应用程序UI的经常需要一次加载多个图片。如在ListView,GridView和ViewPager中,通常在一屏中包括在多张图片。 如何高效的加载图片 图片尺寸与大小各种各样

如何增加Tomcat内存

╄→гoц情女王★ 提交于 2019-12-03 03:54:56
有时候在开发中,常常遇到内存溢出问题,很有可能项目过大,导致Tomcat内存不足问题,那么此时就要给Tomcat添加内存了,如,操作如下 1. 先找到Tomcat目录下的catalina.bat文件 2. 打开catalina.bat文件,添加 set CATALINA_OPTS=-Xms512M -Xmx2018M -XX:MaxNewSize=128m -XX:MaxPermSize=256m 来源: https://www.cnblogs.com/qiping/p/11775591.html

tomcat 内存溢出错误记录

点点圈 提交于 2019-12-03 01:10:51
tomcat 内存溢出错误记录: 前提: 你的tomcat是如何启动的: 通过startup.bat方式启动直接tomcat, 或者eclipse下启动tomcat, 两种方式解决方案不同。 解决方案: 直接启动tomcat: 手动设置MaxPermSize大小,如果是linux系统,修改TOMCAT_HOME/bin/catalina.sh,如果是windows系统,修改TOMCAT_HOME/bin/catalina.bat, 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -ea -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError eclipse启动tomcat: 修改eclipse.ini文件,修改如下: -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms256m -Xmx512m -Declipse.buildId=v22.6.2-1085508 -XX:PermSize=256M -XX:MaxPermSize=512M eclipse 点击“Run”-"Run