Android 开机Process xxx (pid xxxx) has died问题分析

} else if (app.pid != pid) {

// A new process has already been started.

Slog.i(TAG, "Process " + app.processName + " (pid " + pid

  • ") has died and restarted (pid " + app.pid + “).”);

EventLog.writeEvent(EventLogTags.AM_PROC_DIED, app.userId, app.pid, app.processName);

} else if (DEBUG_PROCESSES) {

Slog.d(TAG, "Received spurious death notification for thread "

  • thread.asBinder());

}

}

可以看到app.killedByAm = false,也就是说不是ActivityManager主动kill该应用,而是LowMemory的原因(for RAM)。

ProcessRecord里属性:

private final BatteryStatsImpl mBatteryStats; // where to collect runtime statistics

final ApplicationInfo info; // all about the first app in the process

final boolean isolated; // true if this is a special isolated process

final int uid; // uid of process; may be different from ‘info’ if isolated

final int userId; // user of process.

final String processName; // name of the process

// List of packages running in the process

final ArrayMap<String, ProcessStats.ProcessStateHolder> pkgList

= new ArrayMap<String, ProcessStats.ProcessStateHolder>();

ArraySet pkgDeps; // additional packages we have a dependency on

IApplicationThread thread; // the actual proc… may be null only if

// ‘persistent’ is true (in which case we

// are in the process of launching the app)

ProcessStats.ProcessState baseProcessTracker;

BatteryStatsImpl.Uid.Proc curProcBatteryStats;

int pid; // The process of this application; 0 if none

int[] gids; // The gids this process was launched with

String r

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值