当前位置: 首页 > news >正文

商标注册证系统优化软件哪个最好的

商标注册证,系统优化软件哪个最好的,深圳网站建设服务电话,wordpress主題移动端简介 android系统中SystemServer WatchDog的主要作用是监控SystemServer进程的运行状态,防止其卡住或者死锁。 具体来说,watchDog线程会定期去检查SystemServer线程的运行情况。如果发现SystemServer线程超过一定时间未有响应,watchDog会认为SystemServer进程发生了问题,这时…简介 android系统中SystemServer WatchDog的主要作用是监控SystemServer进程的运行状态,防止其卡住或者死锁。 具体来说,watchDog线程会定期去检查SystemServer线程的运行情况。如果发现SystemServer线程超过一定时间未有响应,watchDog会认为SystemServer进程发生了问题,这时它会采取以下行动: 1. 打印出SystemServer线程当前的堆栈信息,以帮助定位问题。 日志格式如下Blocked in monitor(monitor 不为空)|Blocked in handler onmonitor为空 2. 重启SystemServer进程。watchDog线程会先杀死已卡住的SystemServer进程,然后重新fork出一个新的SystemServer进程。 通过这种机制,watchDog线程可以像一只“看门狗”一样时刻监视SystemServer的状态,一旦发现SystemServer发生故障,就可以及时采取行动重启它,从而提高系统的健壮性和稳定性。watchDog线程在系统启动时由Init进程 fork 出,它需要持续运行以保护 SystemServer 不会发生故障时无人管控的情况 实现方式 通过监听system_server进程中时间敏感线程的调度时间来判断进程当前是否卡顿或者长时间持锁 WatchDog初始化 //system_server前台线程mMonitorChecker new HandlerChecker(FgThread.getHandler(),foreground thread);mHandlerCheckers.add(withDefaultTimeout(mMonitorChecker));// Add checker for main thread. We only do a quick check since there// can be UI running on the thread.//system_server主线程mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(new Handler(Looper.getMainLooper()), main thread)));// Add checker for shared UI thread. system_server ui线程mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(UiThread.getHandler(), ui thread)));// And also check IO thread.mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(IoThread.getHandler(), i/o thread)));// And the display thread.mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(DisplayThread.getHandler(), display thread)));// And the animation thread. system_server 动画执行线程mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(AnimationThread.getHandler(), animation thread)));// And the surface animation thread.mHandlerCheckers.add(withDefaultTimeout(new HandlerChecker(SurfaceAnimationThread.getHandler(),surface animation thread)));//检测是否binder线程池耗尽addMonitor(new BinderThreadMonitor());WatchDog中循环 public class Watchdog implements Dumpable {private void run() {boolean waitedHalf false;while (true) {for (int i0; imHandlerCheckers.size(); i) {HandlerCheckerAndTimeout hc mHandlerCheckers.get(i);//向handler中插入空消息或者monitor检测消息hc.checker().scheduleCheckLocked(hc.customTimeoutMillis().orElse(watchdogTimeoutMillis * Build.HW_TIMEOUT_MULTIPLIER));}long start SystemClock.uptimeMillis();while (timeout 0) {//睡眠半个检测周期后检测消息是否得到及时处理mLock.wait(timeout);}final int waitState evaluateCheckerCompletionLocked();if (waitState COMPLETED) {// The monitors have returned; resetwaitedHalf false;continue;} else if (waitState WAITING) {continue;} else if (waitState WAITED_HALF) {if (!waitedHalf) {Slog.i(TAG, WAITED_HALF);waitedHalf true;blockedCheckers getCheckersWithStateLocked(WAITED_HALF);subject describeCheckersLocked(blockedCheckers);pids new ArrayList(mInterestingJavaPids);doWaitedHalfDump true;} else {continue;}} else {//所有超时的handlerblockedCheckers getCheckersWithStateLocked(OVERDUE);subject describeCheckersLocked(blockedCheckers);allowRestart mAllowRestart;pids new ArrayList(mInterestingJavaPids);}} //打印handler消息logWatchog(doWaitedHalfDump, subject, pids);//杀掉system_server进程Process.killProcess(Process.myPid());System.exit(10);}public final class HandlerChecker implements Runnable {public void scheduleCheckLocked(long handlerCheckerTimeoutMillis) {mWaitMax handlerCheckerTimeoutMillis;if (mCompleted) {// Safe to update monitors in queue, Handler is not in the middle of workmMonitors.addAll(mMonitorQueue);mMonitorQueue.clear();}//如果当前monitors为空并且消息队列中无消息if ((mMonitors.size() 0 mHandler.getLooper().getQueue().isPolling())|| (mPauseCount 0)) {mCompleted true;return;}if (!mCompleted) {// we already have a check in flight, so no needreturn;}mCompleted false;mCurrentMonitor null;mStartTime SystemClock.uptimeMillis();//把自身post到队列中检测mMonitors耗时如果mMonitors为空则仅检测handler中是否有阻塞消息mMonitors中大多是检测锁对象是否及时释放mHandler.postAtFrontOfQueue(this);}Overridepublic void run() {final int size mMonitors.size();for (int i 0 ; i size ; i) {synchronized (mLock) {mCurrentMonitor mMonitors.get(i);}mCurrentMonitor.monitor();}synchronized (mLock) {mCompleted true;mCurrentMonitor null;}}}} WatchDog addMonitor //frameworks/base/services/core/java/com/android/server/Watchdog.javapublic void addMonitor(Monitor monitor) {synchronized (mLock) {mMonitorChecker.addMonitorLocked(monitor);} }//frameworks/base/services/core/java/com/android/server/Watchdog$HandlerChecker.javavoid addMonitorLocked(Monitor monitor) {mMonitorQueue.add(monitor);}//frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java//单纯检测是否有方法长时间持有锁 public void monitor() {synchronized (this) { }} //frameworks/base/services/core/java/com/android/server/input/InputManagerService.java //检测是否持有一系列锁 public void monitor() {synchronized (mInputFilterLock) { }synchronized (mAssociationsLock) { /* Test if blocked by associations lock. */}synchronized (mLidSwitchLock) { /* Test if blocked by lid switch lock. */ }synchronized (mInputMonitors) { /* Test if blocked by input monitor lock. */ }synchronized (mAdditionalDisplayInputPropertiesLock) { /* Test if blocked by props lock */ }mBatteryController.monitor();mNativeInputManger.monitor();}//frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cpp //分别检测reader writer线程是否有阻塞任务 static void nativeMonitor(JNIEnv* env, jobject nativeImplObj) {NativeInputManager* im getNativeInputManager(env, nativeImplObj);im-getInputManager()-getReader().monitor();im-getInputManager()-getDispatcher().monitor(); } //frameworks/native/services/inputflinger/reader/InputReader.cpp //inputReader Thread是否有长时间未读取的消息 void InputReader::monitor() {std::unique_lockstd::mutex lock(mLock);mEventHub-wake();mReaderIsAliveCondition.wait(lock);// Check the EventHubmEventHub-monitor(); }
http://www.hkea.cn/news/14430159/

相关文章:

  • 网站建设要多少费用招标网站哪个好
  • 网站 png邢台哪里建网站
  • 中国知名网站建设公司网站建设模板是什么
  • 有什么网站可以做电子北京做seo的公司
  • wordpress网站制作教程株洲做网站的
  • 网站运营编辑wordpress多媒体设置
  • 太原做响应式网站设计西安做网站设计的公司
  • 嘿客免费网站建设ui中有哪些做的好看的网站
  • 分析企业网站建设流程宁波专业做网站的公司
  • 深圳在哪些网站找什么好处网站添加备案
  • 海淘网站主要关键词WordPress同步某个表
  • 网站建设月总结wordpress的运用
  • 广东品牌网站建设多少钱网站导航栏的作用
  • 万网放网站青岛核酸检测最新消息
  • 郑州网站创建wordpress微信登录插件免费
  • 免费完整版的网站模板房地产最新消息是涨还是跌
  • 电子商务网站如何推广建设银行的官方网站
  • 个人业务网站源码php网页制作一般多少钱
  • 长春网站制作方案定制电商平台营销策划方案
  • 个人网站建设教程帝国文章网站模板
  • 国外贸易网站wordpress 导航栏代码
  • 一流导航设计网站厦门网站设计个人
  • 天元建设集团有限公司邮政编码英文网站seo
  • 服饰商城网站建设网站制作怎样快速
  • 如何做ico空投网站深圳住房和建设局网站在哪个网
  • 公司网站怎么做关键词海报设计网站免费
  • 安徽省建设监理有限公司网站做网站运营
  • 电子产品网站模板pc端网站建设电话
  • 做混剪素材网站鞋店网站建设方案
  • 怎么做网站logo四川省城乡建设网查询