Android While 循环导致的资源占用过高进而导致程序崩溃问题

Timeline: Activity_launch_request time:65620
04-14 15:31:25.347: I/dalvikvm(3483): Total arena pages for JIT: 11
04-14 15:31:25.621: D/dalvikvm(3483): JIT unchain all for threadid=13
04-14 15:31:26.371: W/dalvikvm(3483): threadid=1: spin on suspend #1 threadid=13 (pcf=0)
04-14 15:31:27.122: W/dalvikvm(3483): threadid=1: spin on suspend #2 threadid=13 (pcf=0)
04-14 15:31:27.122: I/dalvikvm(3483): "main" prio=5 tid=1 RUNNABLE

JIT unchain all for threadid=19

04-14 15:33:28.638: W/dalvikvm(5595): threadid=20: spin on suspend #1 threadid=19 (pcf=0)
04-14 15:33:29.388: W/dalvikvm(5595): threadid=20: spin on suspend #2 threadid=19 (pcf=0)
04-14 15:33:29.388: I/dalvikvm(5595): "pool-5-thread-2" prio=5 tid=20 RUNNABLE

运行应用过程中多次调用While(!isComplete); 对线程进行阻塞,导致线程资源占用过高。修改为一下实现方式可以降低资源占用

while(!isComplete){

  try {

    Thread.sleep(100);
  } catch (InterruptedException e) {
  // TODO Auto-generated catch block
    Log.e(e);
  }
  continue;

}

时间: 2024-11-05 21:56:28

Android While 循环导致的资源占用过高进而导致程序崩溃问题的相关文章

工具运行过程中,CPU占用过高的分析定位

之前使用Java Swing开发了一款设备档案收集工具.支持多台设备同时收集,每个设备使用一个线程.在同时收集多台设备信息时,发现CPU占用率居然达到了97%,而且高居不下.显然这样的性能是令人无法忍受的. 我们知道,通过jdk自带的工具jvisualvm可以查看每个线程的执行情况,但就是无法分析每个线程的CPU占用情况.由于工具是运行在Windows系统上的,所以也没办法像Linux下面那样通过命令去分析线程的CPU占用.而微软的process explorer工具可以解决这一难题.通过这个强

JVM探秘:线上CPU占用过高故障排查

线上系统突然变得卡顿或无法访问,排除网络异常的情况下,检查服务器资源占用情况,如果CPU.内存.磁盘IO等资源占用过高,就会导致无法继续处理HTTP请求. 如果是CPU占用飙高,有可能是程序中存在死循环.死锁导致的,也有可能是内存紧张从而频繁GC导致的,要具体问题具体分析. 排查过程 这里记录一次线上CPU占用过高的故障排查过程,重点会用到jstack命令. top命令 首先,使用top命令查看服务器资源使用情况,找到CPU占用过高的进程. 发现pid为29167的Java进程CPU占用很高,已

linux内存占用过高

top top -H -p 28857jstack 28857 > a.txtjstack -F pid 如果是web应用,可以继续打印线程的堆栈信息+++++++++ strace -p 24167 通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源. 将需要的线程ID转换为16进制格式:printf "%x\n" 2967973ef最后打印线程的堆栈信息:jstack 29679|grep 73ef -A 30

centos系统内存 buff/cache 占用过高

情况说明: centos系统,buff/cache占用过高,导致服务器内存居高不下,但是通过top查看系统进程并无过多占用内存 实际情况: 处理步骤:1.执行sync命令: sync 2.执行释放内存命令: echo 3 > /proc/sys/vm/drop_caches 命令解释: sync 指令会将存于 buffer 中的资料强制写入硬盘中. echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache. echo 2 > /proc/sys/vm

QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)

原文地址:关于QT下资源使用和资源占用内存过多的问题作者:技术成就梦想 最近研究了一下如何从外部动态调用图片的问题,从而研究了图片资源的使用方法.网上最常见的帖子是这个,感觉总结的还不错. http://www.cnblogs.com/lzjsky/archive/2012/08/20/2647471.html 总的来说,就两种方式. 一种就是使用qrc资源文件,也就是在QT的工程中添加资源文件,这个方法比较简单容易操作,对于初学者来说比较容易上手,在资源比较少的时候可以使用.但是也有它的缺点,

如何处理android程序变为后台程序,系统回收资源,再次打开时,程序因为null指针等崩溃

home键等原因,程序会变为后台程序,系统会更具需要,可能回收资源,再打开时候,就会因为资源回收,再调用oncreate,没有Intent参数而导致程序崩溃.   这种情况,我们可以处理的方式有两种,一是用: @Override     protected void onSaveInstanceState(Bundle outState) {      // TODO Auto-generated method stub      super.onSaveInstanceState(outSta

手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.

oracle 数据库服务器CPU资源占用超高(75%)

环境: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production CentOS release 6.5 X64 现象:系统CPU使用率达到75%,查看系统进程资源状态. 数据库中查看 select t.sql_text,s.sid, s.serial#,s.program,s.process,s.USERNAME,p.spid from  v$sqlarea t ,v$session s ,v$pro

Android SDK 在线更新镜像服务器资源

Android SDK 在线更新镜像服务器资源: 大连东软信息学院镜像服务器地址: http://mirrors.neusoft.edu.cn 端口:80 北京化工大学镜像服务器地址: IPv4: http://ubuntu.buct.edu.cn/ 端口:80 IPv4: http://ubuntu.buct.cn/ 端口:80 IPv6: http://ubuntu.buct6.edu.cn/ 端口:80 上海GDG镜像服务器地址: http://sdk.gdgshanghai.com 端口