首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我的应用程序中的内存泄漏

我的应用程序中的内存泄漏
EN

Stack Overflow用户
提问于 2011-09-16 07:06:32
回答 3查看 137关注 0票数 0

我正在开发一个IOS application.In Xcode,我会分析应用程序的运行->分析它显示了47个潜在的内存泄漏我检查了所有的情况在大多数情况下不可能释放内存,在应用商店中启动应用程序时会出现任何问题吗?我已经彻底检查了应用程序,它没有在任何地方崩溃,也没有在任何地方显示低内存警告。由于我是IOS开发的新手,请告诉我我能为此做些什么

在viewDidUnload方法中释放内存以避免内存泄漏是否足够?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-16 07:19:33

如果它没有显示任何内存警告,它可能不会被拒绝。但是,构建有漏洞的应用程序通常不是好的编程。你为什么不解决那些漏洞?没有一种情况下你不能释放你的资源。使用自动释放或在需要的任何地方将释放消息传递给元素。

此外,为了更好地分析你的应用程序,使用仪器运行应用程序,它会让你更好地了解泄漏来自哪里。

编辑:如何使用仪器运行应用程序。

在Xcode中,单击顶部菜单栏中的Run。在本节中,进入Run with Performance Tools,然后选择Leaks

要了解如何使用仪器,请访问here

票数 2
EN

Stack Overflow用户

发布于 2011-09-16 07:36:48

注:我还没有机会玩一些最新的功能,如ARC,所以这可能是或可能不会过时了。

是的,这可能是一个问题。根据苹果公司的说法,这是他们确实会检查的一件事。然而,似乎没有什么能保证苹果的审查团队会拒绝(或接受)。然而,也许更重要的是,你希望自己作为应用程序开发者的声誉良好,你想从事让人们的手机更好地为他们工作的业务。

如果操作得当,您将始终可以释放使用new或alloc创建的任何对象。

但是,为了防止、跟踪和消除内存泄漏,您需要使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1. analysis
  2. Instruments Leaks
  3. Your own analysis, and peer review when needed
  4. Clean coding, best practices and patterns

在使用Instruments泄漏分析工具时,请使用您的应用程序并尝试命中所有不同的执行路径。查看对象是否显示为泄漏。我通常根据泄漏的总大小(对象大小*泄漏数量)来确定优先级,然后向下工作,直到没有泄漏出现为止。单击该对象将显示该对象最初分配位置附近的某个位置。

我发现即使是Instruments也可能无法显式地捕获所有的内存泄漏。

另一个技巧,在这方面可能会有所帮助,是推理出一些不同的“循环”,你可以在你的应用程序中,一旦你返回“家”,你的应用程序应该具有与上次你在那里相同的内存占用。例如,从主屏幕开始,执行活动X,然后执行活动Y,然后返回到主屏幕。假设您期望在第一个周期之后,第二次和第三次返回到主屏幕,内存占用空间应该是相同的。然后,您可以使用连接的Instruments和分配的数量来练习此操作。这可以为您提供一些有价值的信息。

保留周期可能会发生一些有趣的事情,当您在类之间具有循环依赖时可能会发生这种情况,并且在尝试使用块执行某些事情时很容易发生这种情况。

当对象在应用程序的整个生命周期(如单例)中持续存在时,您可能会试图忽略有关内存泄漏的警告。我的意见是消除警告并将对象重新分配到某个地方,这是一个干净的问题。

当你构建的时候,没有编译器和分析器的警告也会让你感觉很好!

票数 2
EN

Stack Overflow用户

发布于 2011-09-16 07:20:20

如果你在模拟器上测试,你可能永远不会看到内存不足的警告。但不管怎样,所有的内存泄漏都应该是可以修复的,除了那些存在于Apple框架中的内存泄漏(这些框架可能并不多)。

Analyze返回了什么类型的信息?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7441257

复制
相关文章
Java 中的内存泄漏
当应用程序持有不再需要的对象引用时,就会发生 Java 内存泄漏。这些意外的对象引用阻止内置的 Java 垃圾收集机制释放这些对象消耗的内存,最终导致致命的OutOfMemoryError。
用户4235284
2023/10/14
2770
Java 中的内存泄漏
了解Java中的内存泄漏
原文链接:https://www.baeldung.com/java-memory-leaks
慕容千语
2019/06/13
1.9K0
了解Java中的内存泄漏
闲谈Android中的内存泄漏
在长久以来的 Android 开发过程中,内存泄漏一直是一个比较头疼的问题。内存泄漏会导致应用卡顿,用户体验不佳,甚至会造成应用崩溃的严重后果。所以如何科学地进行内存管理一直是大家探讨的话题,从一开始主动使用 MAT 分析 hprof 文件,到后来 LeakCanary “被动”的接收内存泄漏消息。应用中发现内存泄漏的手段越来越多了,操作也越来越便捷,但内存泄漏的问题还是不能轻易忽视的,提高应用的体验和质量也是迫在眉睫。
俞其荣
2021/11/24
7870
闲谈Android中的内存泄漏
闲谈Android中的内存泄漏
在长久以来的 Android 开发过程中,内存泄漏一直是一个比较头疼的问题。内存泄漏会导致应用卡顿,用户体验不佳,甚至会造成应用崩溃的严重后果。所以如何科学地进行内存管理一直是大家探讨的话题,从一开始主动使用 MAT 分析 hprof 文件,到后来 LeakCanary “被动”的接收内存泄漏消息。应用中发现内存泄漏的手段越来越多了,操作也越来越便捷,但内存泄漏的问题还是不能轻易忽视的,提高应用的体验和质量也是迫在眉睫。
俞其荣
2019/07/09
1.4K0
Java中的内存泄漏学习
Java中的内存泄漏学习   Java语言的一个关键的优势就是它的内存管理机制。你只管创建对象,Java的垃圾回收器帮你分配以及回收内存。然而,实际的情况并没有那么简单,因为内存泄漏在Java应用程序中还是时有发生的。   下面就解释下什么是内存泄漏,它为什么会发生,以及我们如何阻止它的发生。  1. 什么是内存泄漏?   内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。   要想理解这个定义,我们需要先了解一下对象在内存中的状态。下面的这张图就解释了什么是无用
用户1289394
2018/02/26
1.2K0
深入理解Java中的内存泄漏内存泄漏内存泄漏发生的原因造成内存泄露的常见情形内存泄露的解决方案
Java的一个最显著的优势是内存管理。你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收。然而,情况并不是这样简单,内存泄露还是经常会在Java应用程序中出现。
desperate633
2018/08/22
1.7K0
深入理解Java中的内存泄漏内存泄漏内存泄漏发生的原因造成内存泄露的常见情形内存泄露的解决方案
调试 .NET Core 中的内存泄漏
当应用引用不再需要执行所需任务的对象时,可能会发生内存泄漏。 引用上述对象会使垃圾回收器无法回收所使用的内存,这通常会导致性能降低,并可能最终引发 OutOfMemoryException。
呆呆
2022/01/09
1.7K0
读者说我的代码有内存泄漏的风险
看了这段代码,你知道是哪里发生内存泄漏了嘛?我先来告诉大家,这里time.After(time.Millisecond * 5)会发生内存泄漏,具体原因嘛别着急,我们一步步分析。
Golang梦工厂
2022/07/08
6690
读者说我的代码有内存泄漏的风险
系统剖析Android中的内存泄漏
作为Android开发人员,我们或多或少都听说过内存泄漏。那么何为内存泄漏,Android中的内存泄漏又是什么样子的呢,本文将简单概括的进行一些总结。
技术小黑屋
2018/09/03
1.3K0
系统剖析Android中的内存泄漏
golang:快来抓住让我内存泄漏的“真凶”!
导语 | 有句话说得好:“golang10次内存泄漏,8次goroutine泄漏,1次真正内存泄漏”,那还有一次是什么呢?别急,下面就结合本次线上遇到的问题来讲一讲golang的内存泄漏和分析解决办法。 一、起——内存泄漏表现 在平常开发中golang的gc已经帮我们解决了很多问题了,甚至逐渐已经忘了有gc这种操作。但是在近期线上的一个trpc-go项目的表现实在让人匪夷所思,先让我们看看该患者的症状: 也是那么巧,每天晚上八点左右,服务的内存就开始暴涨,曲线骤降的地方都是手动重启服务才降下来的,内存
腾讯云开发者
2023/05/05
3K0
golang:快来抓住让我内存泄漏的“真凶”!
JS中的垃圾回收与内存泄漏
Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。其原理是:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大并且GC时停止响应其他操作,所以垃圾回收器会按照固定的时间间隔周期性的执行。
前端下午茶
2018/10/22
3.8K0
JS中的垃圾回收与内存泄漏
JavaScript中的垃圾回收和内存泄漏
之前接触的js的内存管理方面的内容一直比较零散,最近在这一块做了一些系统的学习.学习过程中的一些总结在这里分享给大家.欢迎批评指正,共同学习,共同进步.
用户2356368
2019/04/03
1.2K0
JavaScript中的垃圾回收和内存泄漏
Node.js中的内存泄漏分析
内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。如果内存泄漏的位置比较关键,那么随着处理的进行可能持有越来越多的无用内存,这些无用的内存变多会引起服务器响应速度变慢,严重的情况下导致内存达到某个极限(可能是进程的上限,如 v8 的上限;也可能是系统可提供的内存上限)会使得应用程序崩溃。 传统的 C/C++ 中存在野指针,对象用完之后未释放等情况导致的内存泄漏。而在使用虚拟机执行的语言中如 Java、JavaScript 由于使用了 GC (Garbage Coll
FB客服
2018/02/27
3.7K0
Node.js中的内存泄漏分析
怎样修复 Web 程序中的内存泄漏
从服务器端渲染的网站切换到客户端渲染的 SPA 时,我们突然不得不更加注意用户设备上的资源,必须做很多工作:不要阻塞 UI 线程,不要使笔记本电脑的风扇疯狂旋转,不要耗尽手机的电池等。我们将交互性和“类应用程序”行为转换成了更好的新型问题,这些问题实际上并不存在在服务端渲染的世界中。
疯狂的技术宅
2020/02/28
3.3K0
怎样修复 Web 程序中的内存泄漏
技巧|高效使用 JavaScript 闭包——避免 Node.js 应用程序中的内存泄漏
在 Node.js 中,广泛采用不同形式的闭包来支持 Node 的异步和事件驱动编程模型。通过很好地理解闭包,您可以确保所开发应用程序的功能正确性、稳定性和可伸缩性。
疯狂的技术宅
2019/03/28
2K0
技巧|高效使用 JavaScript 闭包——避免 Node.js 应用程序中的内存泄漏
内存溢出与内存泄漏的区别
内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer, 但给它存了long才能存下的数,那就是内存溢出。
用户9914333
2022/07/22
2.3K0
内存溢出和内存泄漏的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
用户6182664
2019/10/14
4.2K0
Javascript的内存泄漏分析
     作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题。只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C++开发者(你懂的)。。。。。,如果你是前端开发者,肯定在使用Javascript(你或者会说,Js是世界上最棒的语言),但我这里也得告诉你,Js的内存泄漏会来得更为突然,或者让你都无法察觉。本文就带大家领略一下Js的风骚:
sam dragon
2018/08/02
1.3K0
Javascript的内存泄漏分析
点击加载更多

相似问题

FTP上传后无法成功回调

13

FTP上传后未获得成功或错误回调

11

启动-停止-守护进程总是返回成功。

22

在alljoyn守护进程启动后无法启动服务

12

启动守护进程,但直到守护进程启动进程在golang中完成后才会继续。

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文