UPDATE2我想我找到了泄漏的真正来源。我有一些业务对象具有我忘记发布的字符串属性。这些字符串属性是从我的自定义 xlm 节点对象复制而来的,在此处创建 (KGYXMLNode) 我不明白为什么在这里报告泄漏而不是我的自定义类。我的 NSString 属性是copy
和不是retain
.
更新:我认为这是 Instruments 中的错误或其他东西,或者它不再神奇地泄漏,但是由于 xcode 4 它没有显示此泄漏。
您好,根据仪器,我在以下代码中有泄漏。我已经围绕某些 libxml 函数构建了一个 Objective-c 包装器,以便能够使用 xpath 解析 xml 文档,并且在这种方法中,我为我的自定义节点对象设置了innerText。
-(void) SetInnerTextForNode: (xmlNodePtr) node : (KGYXMLNode *) obcNode
{
if ((node) && (node->children))
{
for (xmlNodePtr pnode = node->children; pnode != NULL; pnode = pnode->next)
{
if (pnode->type == XML_TEXT_NODE)
{
xmlChar *content = pnode->content;
NSString *innerText = [[NSString alloc] initWithUTF8String: (char *)content];
NSString *trimmedText = [innerText stringByTrimmingCharactersInSet: trimCharSet];
if (trimmedText.length > 0) …
Run Code Online (Sandbox Code Playgroud) 由于某种原因,我的 OS X 应用程序在使用时间分析器时崩溃,但在其他情况下不会崩溃。我想查看程序的 stderr 和 stdout 输出,以尝试诊断问题所在。有任何想法吗?
我正在进行性能测试,尝试测量NSOutlineView
Mac 应用程序中重要部分的渲染性能。在此过程中,我循环多次,创建视图,将其嵌入虚拟窗口中,并将其渲染为图像。我概括了一点,但大致是这样的:
// Intentionally de-indented these for easier reading in this narrow page
class MyPerformanceTest: XCTestCase { reading
func test() {
measure() {
// autoreleasepool {
let window: NSWindow = {
let w = NSWindow(
contentRect: NSRect.init(x: 100, y: 100, width: 800, height: 1200),
styleMask: [.titled, .resizable, .closable, .miniaturizable],
backing: .buffered,
defer: false
)
w.tabbingMode = .disallowed
w.cascadeTopLeft(from: NSPoint(x: 200, y: 200))
w.makeKeyAndOrderFront(nil)
w.contentView = testContentView // The thing I'm performance testing
return w
}()
let bitmap = …
Run Code Online (Sandbox Code Playgroud) instruments nsoutlineview appkit automatic-ref-counting swift
如何在代码中确定内存泄漏的来源?除了我的应用程序中的"main"函数之外,它没有引用任何内容.
我正在深入研究iOS开发并熟悉这些工具.在每天结束时,我在我的应用程序上执行"Run with instruments tool - > Leaks"以检查我当天可能实施的任何内存泄漏.它似乎很少发现任何泄漏,虽然我想我只是一个自然的iOS程序员,但我拒绝相信;)
无论如何,我刚刚在我的代码中找到了我认为是内存泄漏的东西,并且它没有被仪器捕获.我有这行代码......
gkSession = [[GKSession alloc] initWithSessionID:@"testID" displayName:@"Temp Display Name" sessionMode:GKSessionModeClient];
Run Code Online (Sandbox Code Playgroud)
我发现release
我的代码中没有调用任何地方.我的问题是......
我明显担心的是我的代码中有内存泄漏而且Instruments没有捕获它们.
非常感谢您的帮助!
我正在测试我的应用程序而且我一直在接收这些泄漏,但它们都没有在我的代码中.我想,还有其他人有这些问题吗?
__NSCFDictionary 0x5f8cfe0 48 AudioToolbox SimAggregateDevice::SimAggregateDevice(__CFString const*, __CFString const*, long&)
Malloc 32 Bytes 0x5f83a00 32 AudioToolbox SimAggregateDevice::SimAggregateDevice(__CFString const*, __CFString const*, long&)
Malloc 48 Bytes 0x5f839d0 48 AudioToolbox SimAggregateDevice::SimAggregateDevice(__CFString const*, __CFString const*, long&)
Malloc 32 Bytes 0x5f839b0 32 AudioToolbox CreateDictionaryForDevice(unsigned long)
Malloc 32 Bytes 0x5f83990 32 AudioToolbox CreateDictionaryForDevice(unsigned long)
__NSCFDictionary 0x5f83960 48 AudioToolbox CreateDictionaryForDevice(unsigned long)
Malloc 32 Bytes 0x5f83940 32 AudioToolbox SimAggregateDevice::SimAggregateDevice(__CFString const*, __CFString const*, long&)
__NSCFArray 0x5f838b0 32 AudioToolbox SimAggregateDevice::SimAggregateDevice(__CFString const*, __CFString const*, long&)
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒,谢谢......是的...一个新手.
我想确保我正确地读取分配插件.我正在测试一个接收内存警告1,2和3的iPad应用程序.我想知道我的应用程序当前耗尽的内存,我认为它必须是"Live Bytes"列?这标志着All Allocations为2.42 MB我觉得它很低.
其他专栏报道了什么?#Transitory,整体字节?此外,如果我的应用程序仅使用3 MB内存,如果我在没有释放的情况下获得内存级别3警告,它是否会被杀死?
谢谢.
我的应用程序永久收到内存警告,我真的找不到导致它的原因.即使我将应用程序剥离到最低限度,我也遇到了严重的泄漏.所以我想从单触摸示例编译默认的HelloWorld_IPhone应用程序,看看我是否得到了相同的泄漏.事实证明我做到了.真让我困惑.
应用程序启动后会出现泄漏(红色条填满整个列).
泄露的对象:Malloc 16 Bytes,Responsible Library:HelloWorld_IPhone,负责框架:mono_dl_open
我的问题是这是否正常或我是否遗漏了什么?
编辑:在调试模式下在我的设备上运行TweetStation应用程序时仪器输出的屏幕截图!与我的应用程序结果相同.肯定有些事情不对吗?在我的设备上运行TweetStation应用程序时,仪器输出的屏幕截图
我有以下代码:
NSString *bgImageName = [[Useful instance] getRootviewBackgroundImageName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:bgImageName]];
imageView.clipsToBounds = YES;
CGRect rc = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[imageView setFrame:rc];
[self.view insertSubview:imageView atIndex:0];
[imageView release];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,仪器显示100%和第2行的内存泄漏,而在xcode 4.6中并非如此.我现在正在osx 10.8.5上使用xCode 5
看来,我正确地释放了UIImageView
在第6行的视图中插入的已分配(第7行),所以我无法看到为什么intruments会引发内存泄漏警告.
有人知道为什么机构会(在我看来)提出错误的信息吗?
编辑:这是仪器截图与我泄露的对象的分配 - 摘要:
在UIKit
和QuartzCore被保留我的对象,这是我的泄漏原因UIImageView
(或我错了这个假设呢?).
它UIImageView
被插入到视图(a UIViewController
)中,该视图在我的xib文件中引用.UIImageView
在将其添加到'self.view'之后,如何控制我添加的内容?
我正在使用Objective C++库(一些.mm文件)运行iOS演示,并希望通过Instruments分析应用程序的内存使用情况.但是,我看到调试选项卡不显示任何内存信息.
试图在仪器中分析应用程序会显示我的设备,但它显示为灰色并表示它处于脱机状态
如何修复我的XCode以允许对该项目进行内存调试/分析?它与使用Objective C++库有什么关系吗?
instruments ×10
memory-leaks ×5
ios ×4
iphone ×4
objective-c ×4
xcode ×3
ipad ×2
appkit ×1
c++ ×1
debugging ×1
libxml2 ×1
memory ×1
profiler ×1
swift ×1
xamarin.ios ×1