偶现来电时手机操作出现重启

news2024/12/23 12:10:06

问题描述:偶现来电时手机操作出现重启

问题分析:从系统Log看

09-06 10:22:44.791829  1400  1425 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on main thread (main)
09-06 10:22:44.794133  1400  1425 W Watchdog: main annotated stack trace:
09-06 10:22:44.794535  1400  1425 W Watchdog:     at com.android.server.telecom.SystemStateHelper$1.onReceive(SystemStateHelper.java:80)
09-06 10:22:44.794992  1400  1425 W Watchdog:     - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1)
09-06 10:22:44.795265  1400  1425 W Watchdog:     at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
09-06 10:22:44.795402  1400  1425 W Watchdog:     at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(Unknown Source:2)
09-06 10:22:44.795508  1400  1425 W Watchdog:     at android.os.Handler.handleCallback(Handler.java:942)
09-06 10:22:44.795605  1400  1425 W Watchdog:     at android.os.Handler.dispatchMessage(Handler.java:99)
09-06 10:22:44.795740  1400  1425 W Watchdog:     at android.os.Looper.loopOnce(Looper.java:204)
09-06 10:22:44.795843  1400  1425 W Watchdog:     at android.os.Looper.loop(Looper.java:291)
09-06 10:22:44.795940  1400  1425 W Watchdog:     at com.android.server.SystemServer.run(SystemServer.java:1020)
09-06 10:22:44.796036  1400  1425 W Watchdog:     at com.android.server.SystemServer.main(SystemServer.java:692)
09-06 10:22:44.796127  1400  1425 W Watchdog:     at java.lang.reflect.Method.invoke(Native Method)
09-06 10:22:44.796247  1400  1425 W Watchdog:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
09-06 10:22:44.796398  1400  1425 W Watchdog:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1114)
09-06 10:22:44.796527  1400  1425 W Watchdog: *** GOODBYE!

从Log看,而Telecom一直等待如下锁 waiting to lock <0x000060ed>,引发WatchDog

Telecom的系统进程为1400

Trace 分析如下:

Telecom 1400主线程一直waiting to lock <0x000060ed>

"main" prio=5 tid=1 Blocked
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x713e81b8 self=0xf0242a10
  | sysTid=1400 nice=-2 cgrp=default sched=1073741824/0 handle=0xf752b470
  | state=S schedstat=( 17127376404 10774636406 33180 ) utm=1285 stm=427 core=7 HZ=100
  | stack=0xff605000-0xff607000 stackSize=8188KB
  | held mutexes=
  at com.android.server.telecom.SystemStateHelper$1.onReceive(SystemStateHelper.java:80)
  - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1) held by thread 68
  at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
  at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(unavailable:2)
  at android.os.Handler.handleCallback(Handler.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loopOnce(Looper.java:204)
  at android.os.Looper.loop(Looper.java:291)
  at com.android.server.SystemServer.run(SystemServer.java:1020)
  at com.android.server.SystemServer.main(SystemServer.java:692)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1114)

1、1400:1400等待1400:1487

该锁又被 1400:1487所持有

"binder:1400_4" prio=5 tid=68 Native
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x16a80eb0 self=0xf0271010
  | sysTid=1487 nice=0 cgrp=default sched=1073741824/0 handle=0xba4c11c0
  | state=S schedstat=( 6412454401 8041460075 15557 ) utm=477 stm=163 core=2 HZ=100
  | stack=0xba3c6000-0xba3c8000 stackSize=1004KB
  | held mutexes=
  native: #00 pc 000744ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #01 pc 000404c7  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #02 pc 00040827  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+206) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #03 pc 00041a17  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+78) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #04 pc 0004179b  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+134) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #05 pc 0003b92f  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+118) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #06 pc 000fd4e9  /system/lib/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+84) (BuildId: f8da374b10c090ef6df2144d297bf32f)
  at android.os.BinderProxy.transactNative(Native method)
  at android.os.BinderProxy.transact(BinderProxy.java:602)
  at com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber(ISms.java:1481)
  at android.telephony.SmsManager$1.onSuccess(SmsManager.java:639)
  at android.telephony.SmsManager.sendResolverResult(SmsManager.java:1651)
  at android.telephony.SmsManager.resolveSubscriptionForOperation(SmsManager.java:1612)
  at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:634)
  at android.telephony.SmsManager.sendMultipartTextMessageInternal(SmsManager.java:1076)
  at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:1003)
  at com.android.server.telecom.RespondViaSmsManager.rejectCallWithMessage(RespondViaSmsManager.java:217)
  at com.android.server.telecom.RespondViaSmsManager.onIncomingCallRejected(RespondViaSmsManager.java:147)
  at com.android.server.telecom.CallsManager.rejectCall(CallsManager.java:2901)
  at com.android.server.telecom.InCallAdapter.rejectCall(InCallAdapter.java:128)
  - locked <0x000060ed> (a com.android.server.telecom.TelecomSystem$1)
  at com.android.internal.telecom.IInCallAdapter$Stub.onTransact(IInCallAdapter.java:350)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

为啥1400:1487一直不到释放锁呢,从Trace log中看到1400:1487与1793:2325进行交互

context binder
  thread 1793: l 10 need_return 0 tr 0
    outgoing transaction 899363: 0000000000000000 from 1793:1793 to 1400:3633 code 5 flags 10 pri 0:120 r1
    transaction complete
  thread 2325: l 01 need_return 0 tr 0
    incoming transaction 898886: 0000000000000000 from 1400:1487 to 1793:2325 code 5 flags 10 pri 0:120 r1 node 39006 size 272:8 data 0000000000000000
  buffer 898886: 0000000000000000 size 272:8:0 active
  buffer 899156: 0000000000000000 size 12:0:0 delivered

2、1400:1487等待1793:2325

我们在看1793:2325的堆栈,它在处理什么呢

"binder:1793_8" prio=5 tid=74 Waiting
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x15dc3c70 self=0xc2482a10
  | sysTid=2325 nice=0 cgrp=default sched=1073741824/0 handle=0xc1afb1c0
  | state=S schedstat=( 934387147 1124625611 3593 ) utm=63 stm=30 core=2 HZ=100
  | stack=0xc1a00000-0xc1a02000 stackSize=1004KB
  | held mutexes=
  at jdk.internal.misc.Unsafe.park(Native method)
  - waiting on an unknown object
  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
  at java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1772)
  at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3129)
  at java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1799)
  at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1974)
  at com.android.internal.telephony.ims.ImsResolver.getConfiguredImsServicePackageName(ImsResolver.java:1040)
  at com.android.internal.telephony.CarrierSmsUtils.getImsRcsPackage(CarrierSmsUtils.java:85)
  at com.android.internal.telephony.CarrierSmsUtils.getImsRcsPackageForIntent(CarrierSmsUtils.java:50)
  at com.android.internal.telephony.SMSDispatcher.getCarrierAppPackageName(SMSDispatcher.java:2801)
  at com.android.internal.telephony.SMSDispatcher.sendSmsByCarrierApp(SMSDispatcher.java:1355)
  at com.android.internal.telephony.SMSDispatcher.sendText(SMSDispatcher.java:1318)
  at com.android.internal.telephony.SmsDispatchersController.sendText(SmsDispatchersController.java:809)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendTextInternal(IccSmsInterfaceManager.java:561)
  at com.mediatek.internal.telephony.MtkIccSmsInterfaceManager.sendTextInternal(MtkIccSmsInterfaceManager.java:417)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendText(IccSmsInterfaceManager.java:474)
  at com.android.internal.telephony.SmsController.sendIccText(SmsController.java:239)
  at com.android.internal.telephony.SmsController.sendTextForSubscriber(SmsController.java:216)
  at com.android.internal.telephony.ISms$Stub.onTransact(ISms.java:874)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

1793:2325相关线程处于waiting状态,此处需要看代码

packageNameFuture.get(),该函数卡在此处,为什么卡住呢?它需要等待mHandler post的那个runable 执行完毕后,等待才释放,而mHandler运行在主线程中,即1793

3、1793:2325等待1793:1793

1793:1793在干什么呢?导致一直不返回,从Trace中知道1793:1793与1400:3633进行binder交互

context binder
  thread 1793: l 10 need_return 0 tr 0
    outgoing transaction 899363: 0000000000000000 from 1793:1793 to 1400:3633 code 5 flags 10 pri 0:120 r1

"main" prio=5 tid=1 Native
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x713e81b8 self=0xf0242a10
  | sysTid=1793 nice=0 cgrp=default sched=1073741824/0 handle=0xf752b470
  | state=S schedstat=( 13556171224 13027625187 31126 ) utm=971 stm=383 core=1 HZ=100
  | stack=0xff605000-0xff607000 stackSize=8188KB
  | held mutexes=
  native: #00 pc 000744ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #01 pc 000404c7  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #02 pc 00040827  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+206) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #03 pc 000419f3  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+42) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #04 pc 0004179b  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+134) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #05 pc 0003b92f  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+118) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #06 pc 000fd4e9  /system/lib/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+84) (BuildId: f8da374b10c090ef6df2144d297bf32f)
  at android.os.BinderProxy.transactNative(Native method)
  at android.os.BinderProxy.transact(BinderProxy.java:602)
  at com.android.internal.telecom.ITelecomService$Stub$Proxy.getCallCapablePhoneAccounts(ITelecomService.java:1583)
  at android.telecom.TelecomManager.getCallCapablePhoneAccounts(TelecomManager.java:1368)
  at android.telecom.TelecomManager.getCallCapablePhoneAccounts(TelecomManager.java:1291)
  at com.android.phone.vvm.CarrierVvmPackageInstalledReceiver.onReceive(CarrierVvmPackageInstalledReceiver.java:78)
  at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
  at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(unavailable:2)
  at android.os.Handler.handleCallback(Handler.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loopOnce(Looper.java:204)
  at android.os.Looper.loop(Looper.java:291)
  at android.app.ActivityThread.main(ActivityThread.java:8154)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1136)

1793:1793此时在收一个广播,而这个广播和Telecom进行交互

4、1793:1793等待1400:3633

我们需要看下1400:3633在做什么呢,为啥1793:1793的广播无法很快返回呢?

"binder:1400_E" prio=5 tid=257 Blocked
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x1464b290 self=0xbc4e3010
  | sysTid=3633 nice=0 cgrp=default sched=1073741824/0 handle=0xa953c1c0
  | state=S schedstat=( 6045942672 7249409656 14813 ) utm=444 stm=160 core=7 HZ=100
  | stack=0xa9441000-0xa9443000 stackSize=1004KB
  | held mutexes=
  at com.android.server.telecom.TelecomServiceImpl$1.getCallCapablePhoneAccounts(TelecomServiceImpl.java:230)
  - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1) held by thread 68
  at com.android.internal.telecom.ITelecomService$Stub.onTransact(ITelecomService.java:776)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

从Trace看1400:3633也在等这个锁waiting to lock <0x000060ed>,这个锁谁持有呢?

从上面的分析知道1400:1487持有这个锁

5、1400:3633等待1400:1487

将这些锁归纳下:

1、1400:1400等待1400:1487

2、1400:1487等待1793:2325

3、1793:2325等待1793:1793

4、1793:1793等待1400:3633

5、1400:3633等待1400:1487

有发现什么规律吗?2-5两个进程不同线程之间形成了死锁状态

另外,1400 binder耗尽,且1400:1400处于Block状态

解决方案

1、破解死锁即可

2、相关Log链接

https://download.csdn.net/download/tjpuzm/88344419

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Web开发:构建动态Web应用

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Python已经成为一门流行…

功能基础篇2——常用哈希和加密算法介绍及Python相关库与实现

加解密 https://docs.python.org/3/library/crypto.html 三方库推荐&#xff0c;https://cryptography.io/en/latest/ Criptography&#xff0c;https://pypi.org/project/cryptography/ PyCryptodome&#xff0c;a fork of PyCrypto&#xff0c;https://pypi.org/project/…

vue3+ts 实现移动端分页

current 开始页码 pageSize 结束页码 const sizeref<number>(10) //一页显示十条 const eachCurrentPageref<number>(1) //默认是第一页interface ITdata {current: number,pageSize: number,// xxxx 其他参数... } const selectApplyList ref<…

vue-h5:移动Web单击事件和延迟300ms的问题

在PC端的网页&#xff0c;大部分的交互是通过click事件来实现的&#xff0c;然而在移动端&#xff0c;则是通过touch事件来实现触摸交互。 单击或者点击事件&#xff0c;指的是鼠标按下并且在短时间内放开【一般是小于300ms】。 那么移动端&#xff0c;也是类似&#xff0c;在…

大模型微调方法

下面是一些参数高效的微调大模型方法&#xff1a; Adapter 模型总览 Adapter作为一个插件加入到大模型内&#xff0c;微调下游任务时&#xff0c;固定大模型参数&#xff0c;只训练Adapter参数。 LoRA LoRA名为大语言模型的低阶适应&#xff0c;最初设计用于微调LLM&#xf…

面向未来的服务网格发展:展望服务网格技术未来的发展方向和趋势

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

RocketMQ 发送顺序消息

文章目录 顺序消息应用场景消息组&#xff08;MessageGroup&#xff09;顺序性生产的顺序性MQ 存储的顺序性消费的顺序性 rocketmq-client-java 示例&#xff08;gRPC 协议&#xff09;1. 创建 FIFO 主题生产者代码消费者代码解决办法解决后执行结果 rocketmq-client 示例&…

Nginx配置负载均衡时访问地址无法生效

场景还原 今天有小伙伴练习Nginx配置负载均衡时总是无法使用配置好的网址访问 配置文件信详情 http {# 负载均衡 后端IP地址和端口 webservers 策略 轮询upstream webservers{server 192.168.1.100:8080 weight90; server 127.0.0.1:8080 weight10; }server{listen 80;ser…

基于Java+SpringBoot+Vue的旧物置换网站设计和实现

基于JavaSpringBootVue的旧物置换网站设计和实现 源码传送入口前言主要技术系统设计功能截图数据库设计代码论文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 摘 要 随着时代在一步一步在进步&#xff0c;旧物也成人们的烦恼&#xff0c;…

深度学习中安装了包但是依然导入(import)失败这一问题,例如pytorch环境下已经安装了scikit-learn但是import不了

在跑深度学习模型的时候我们要先搭建pytorch环境&#xff0c;这个环境跟windows环境是不同的&#xff0c;我们默认在windows中安装的包在当前的虚拟环境中读取不到&#xff0c;所以导致我们明明安装了包但是依然在实际的导入中(import)报错。解决办法就是我们去虚拟环境中安装包…

使用Scrapy构建高效的网络爬虫

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Scrapy是一个强大的Pyth…

电脑怎么取消磁盘分区?

有时候&#xff0c;我们的电脑会出现一个磁盘爆满&#xff0c;但另一个却空着&#xff0c;这时我们可以通过取消磁盘分区来进行调整&#xff0c;那么&#xff0c;这该怎么操作呢&#xff1f;下面我们就来了解一下。 磁盘管理取消磁盘分区 磁盘管理是Windows自带的磁盘管理工具…

展会动态 | 迪捷软件邀您参加2023世界智能网联汽车大会

*9月18日之前注册的观众免收门票费* 由北京市人民政府、工业和信息化部、公安部、交通运输部和中国科学技术协会联合主办的2023世界智能网联汽车大会将于9月21日-24日在北京中国国际展览中心&#xff08;顺义馆&#xff09;举行。 论坛背景 本届展会以“聚智成势 协同向新——…

论文阅读 - Natural Language is All a Graph Needs

目录 摘要 Introduction Related Work 3 InstructGLM 3.1 Preliminary 3.2 Instruction Prompt Design 3.3 节点分类的生成指令调整 3.4 辅助自监督链路预测 4 Experiments 4.1 Experimental Setup 4.2 Main Results 4.2.1 ogbn-arxiv 4.2.2 Cora & PubMed 4.…

类似东郊到家上门按摩小程序/包括商家入驻、服务查询、订单管理、用户评价等

类似东郊到家上门按摩小程序&#xff0c;简单前端模版。覆盖产品&#xff0c;订单&#xff0c;技师&#xff0c;招聘&#xff0c;充值&#xff0c;优惠等功能。 东郊到家小程序同城预约上门小程序的功能非常齐全&#xff0c;包括商家入驻、服务查询、订单管理、用户评价等&…

全国职业技能大赛云计算--高职组赛题卷④(私有云)

全国职业技能大赛云计算--高职组赛题卷④&#xff08;私有云&#xff09; 第一场次题目&#xff1a;OpenStack平台部署与运维任务1 基础运维任务&#xff08;5分&#xff09;任务3 OpenStack云平台运维&#xff08;15分&#xff09;任务4 OpenStack云平台运维开发&#xff08;1…

数据结构——八叉树

八叉树&#xff08;Octree&#xff09;是一种用于表示和管理三维空间的树状数据结构。它将三维空间递归地分割成八个八分体&#xff08;octant&#xff09;&#xff0c;每个八分体可以继续分割&#xff0c;以实现对三维空间的更精细的划分。八叉树通常用于解决空间搜索和查询问…

高级深入--day27

Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。 Scrapy 使用了 Twisted[twɪstɪd](其主要对手是T…

如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

jvm中对象创建、内存布局以及访问定位

对象创建 Java语言层面&#xff0c;创建对象通常&#xff08;例外&#xff1a;复制、反序列化&#xff09;仅仅是一个new关键字即可&#xff0c;而在虚拟机中&#xff0c;对象&#xff08;限于普通Java对象&#xff0c;不包括数组和Class对象等&#xff09;的创建又是怎样一个过…