isHarryh / Ark-Pets

Arknights Desktop Pets | 明日方舟桌宠
https://arkpets.harryh.cn
GNU General Public License v3.0
519 stars 33 forks source link

[Exception] 部分设备下启动后模型卡顿或无响应 #13

Closed DerekH-233 closed 2 years ago

DerekH-233 commented 2 years ago

启动器中模型流畅,点击启动后 模型十分卡顿(可能只有5帧)/无响应 任务管理器中频繁显示 evb8B92.tmp(32位) 无响应

已下载安装JRE,电脑驱动最新

isHarryh commented 2 years ago

可以详细描述您使用的Release版本吗?

DerekH-233 commented 2 years ago

可以详细描述您使用的Release版本吗?

你好,目前使用的是v1.3.0 刚刚重新下载了一次,依旧存在卡顿问题 下面是录制的视频 https://user-images.githubusercontent.com/61926895/198512323-0ab57d8c-b53e-46d9-b1ce-f32617d13523.mp4

isHarryh commented 2 years ago

请问运行.jar格式的Release仍会发生此问题吗?

DerekH-233 commented 2 years ago

录制视频

请问运行.jar格式的Release仍会发生此问题吗?

是的,下列是两种格式的运行视频,出现的卡顿问题一致

https://user-images.githubusercontent.com/61926895/198535916-16e8f83b-dab5-46f6-922e-8d178b3ce619.mp4

isHarryh commented 2 years ago

经过排查,发现以下关于窗口句柄(HWnd)获取的代码在部分设备上运行耗时长达200ms: https://github.com/isHarryh/Ark-Pets/blob/80bc1acbea97bc60e504f624436d87b293fc2e19/core/src/com/isharryh/arkpets/utils/HWndCtrl.java#L70-L92 其被调用的位置如下,每一帧都需要调用该函数,故造成帧率大幅度下降: https://github.com/isHarryh/Ark-Pets/blob/80bc1acbea97bc60e504f624436d87b293fc2e19/core/src/com/isharryh/arkpets/ArkPets.java#L244

isHarryh commented 2 years ago

经过 @Aloento 的指导,发现其运行迟缓的原因是该函数内的回调函数使用了大量的newhttps://github.com/isHarryh/Ark-Pets/blob/80bc1acbea97bc60e504f624436d87b293fc2e19/core/src/com/isharryh/arkpets/utils/HWndCtrl.java#L76-L82 由此导致的内存抖动可能是卡顿的首要原因。 后续将会通过预筛选来限制new的调用次数,并限制该函数的每秒调用频率,以缓解或解决此问题。