像我之前的许多人一样,我在使用 Flash 降低整个 CPU 内核时遇到问题(具体来说,其中一个线程总是使用 100% 的 CPU)。
Flash 可能在超过 1 个页面上运行(我使用了很多选项卡),但似乎开始这种 CPU 使用的原因是在我开始流式传输电影之后。这在一段时间内运行良好,但在某些时候播放开始跳过,所以我决定进行调查。
我已经尝试使用 Xcode 的 Instruments.app 通过 CPU 采样进行调查,通过遍历采样的调用堆栈,我发现奇怪的是,大约 80% 的 CPU 使用率看起来很可疑,并且是由于恰好 4 次递归调用NP_Initialize
(请参阅发生这种情况的 2 个呼叫站点之一的图片)。发生这种情况的两个站点(仅此而已?)都在0x10fb8ec66 > 0x10fb93947
(在此示例中)的堆栈树中。我还附上了痕迹。
和
我认为这是不自然的,特别是因为从我读过的关于 NPAPI的内容来看,NP_Initialize
浏览器只能调用一次。因此,有人愿意就为什么会发生这种情况提出建议吗?
我在 OSX Mountain Lion 10.8.2 上使用最新的 Firefox Beta 20.0,我的 Shockwave Flash 版本是 11.6.602.167。