问题标签 [instruments]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 为什么当我触摸 UIImageView 时会出现这种奇怪的内存泄漏?
这真的很奇怪。我有一个空白的 UIImageView 子类,它实现了 -touchesEnded:、-touchesMoved 和 -touchesBegan: 方法。这些方法的实现是空的。他们只是什么都不做。但是,当我使用“Leaks”运行 Instruments 时,我触摸 UIImageView 并将手指移到 UIImageView 之外,同时仍然触摸屏幕,我收到 Instruments 的 Memory Leak 警告。
在我的演示应用程序中,这样做时不会发生对象分配。方法是空的。我在 Instruments 中阅读的所有内容都与 Foundation 和 Run Loop 相关。我已经检查了我的班级两次并删除了任何对象分配。它只是一个只显示图像的骨架,但是当触摸它或在屏幕上移动手指时,该图像不会改变。这是没有意义的。
有没有其他人遇到过这样的问题?
更新:我测试了一下,发现当用 5 个手指快速敲击时,屏幕上的任何位置都会发生内存泄漏。我从 Instruments.app 得到的一切都与一些运行和事件循环有关。似乎设备无法足够快地处理触摸,然后在释放分配的对象时卡住了。如果您发现相同的问题,请尝试并在此处报告。
更新:我现在也测试了一些 Apple 示例应用程序。当我像普通用户一样用 3 到 5 根手指在屏幕上进行黑客攻击时(是的,他们会这样做!),然后 Instrument 会显示有关事件和运行循环的内存泄漏。在框架或工具中肯定有一个大的。使用 iPhone OS 2.2.1 测试。
iphone - 每秒有数千个新的 0 大小对象添加到我的净总数中,我应该担心吗?
我刚刚消除了我的项目的泄漏,但在“GeneralBlock-0”类别下仍有数千个对象。净分配的数量是巨大的(在我输入时它接近一百万),但它们都不是泄漏,而且它们的大小都不大于 0 字节。
更新和编辑:
QuartzCore 负责所有有问题的对象。
负责的调用者是(按游戏循环每次迭代的执行顺序:
在设备上运行时,在 GeneralBlock-64、128、256 等下分配 48 字节大小的对象,具有与上述相同的属性。这是不可接受的,因为它显然会导致显着减速。这是我的项目中的问题被追踪到的代码:
我的印象是 CGPoint 是一种类型,并且会在代码块的末尾被释放。为什么会占用我的记忆?如果归根结底,我会将我保存在仪器中的跟踪文件上传给任何感兴趣的人,但我很确定我已经涵盖了所有内容。
iphone - 仪器中没有出现泄漏,即使我确定它们存在
我正在检查 Instruments 中的泄漏,我已经设置为每秒检查一次,但没有出现泄漏。
我确定我的应用程序中一定有一些,有什么可以阻止这些出现吗?有没有一种好方法可以创建泄漏,以便我可以测试泄漏是否确实出现在 Instruments 中?
谢谢!
iphone - 检查 Instruments 中的内存分配
我已经使用泄漏工具清除了我的应用程序的泄漏,但我仍然注意到,当我切换视图时,objectalloc 工具在分配的对象数量和占用空间中跳跃。
我特别看到大量:
GeneralBlock-16,主要由 Foundation 负责调用者 NSLogv
和
主要由 QuartzCore 负责的 GeneralBlock-0
关于我可以做些什么来进一步调试的任何提示?
谢谢!
objective-c - 这里的内存泄漏在哪里?
Instruments 告诉我这段代码中存在内存泄漏,但我似乎找不到它....有什么帮助吗?对不起或新手问题。
objective-c - 无法弄清楚内存泄漏来自哪里
我有点像可可新手,我根本无法弄清楚为什么我在使用此代码的 Instruments 中的泄漏图中会出现峰值。这似乎是一个小泄漏(即 16 字节,泄漏的对象是“Generalblock-16”;这是唯一泄漏的对象,并表示 Self 100%),无论我选择仅 1 个文件还是12,000 个文件。我已经双击了仪器的扩展详细信息视图中显示的堆栈跟踪的每一行,它不会引导我进入代码中的任何行。
提前感谢您提供的任何帮助。
YV
PS:如果我的代码没有问题(我对此表示怀疑)并且泄漏只是一个错误或与我的代码无关的东西,那么按原样使用此代码是否安全?它会给我的应用程序带来不稳定或崩溃或类似的情况吗?
iphone - 将新图像加载到 UIImageView 中,以前图像的内存不会释放
我的应用程序具有三个视图UIImageViews
。大约有 150 张图片作为资源文件,每张 .jpg 文件大小约为 24k。该应用程序将显示所有图像,但一次只显示三个。
但是每次我单击按钮将三个图像加载到 中UIImageViews
时,Instruments 中的“Overall Bytes”列会增加大约 700K,直到我最终收到内存不足警告,然后应用程序崩溃。不知何故,我每次加载三张图像所使用的内存都没有被释放。
我已经四处搜索并尝试了我知道的所有方法,但没有成功,我需要帮助。
我试过这个:(这段代码是加载另外三个图像的动作的一部分。三个 ImageView 是imgShownLeft
、imgShownMiddle
和imgShownRight
。这些是实例变量。我首先必须放入currentImage
所有三个UIImageViews
,然后放入previousImage
左边的一个和nextImage
在右边:
然后我尝试了这个:而不是:
我用了:
并img
以UIImageViews
相同的方式分配,然后
[img release];
然后我尝试了:
然后我尝试了:
但在每种情况下,每次运行此操作都会增加内存需求。
我知道可以一次加载三个图像,而无需在内存中保存 150 个图像!我究竟做错了什么?
感谢您的任何见解。/SD
performance - 如何解释“泄漏”XCode 性能工具的输出?
我不明白 XCode 中“泄漏”性能工具的输出。我如何解释这个输出?
iphone - 在 Instruments 中看不到堆栈跟踪
我正在使用 Instruments 来查找我的 iPhone 应用程序中的内存泄漏。我在应用程序中看到了一些泄漏,但是扩展的详细信息视图没有显示堆栈跟踪。它只是说“此块没有可用的堆栈跟踪”。
我确定我错过了一些导致这种行为的设置。任何帮助将不胜感激!
谢谢水壶