Questions tagged «memory-leaks»

当程序无法释放其已分配但不再使用且不可恢复的内存时,就会发生内存泄漏。


19
performSelector可能会导致泄漏,因为其选择器未知
ARC编译器收到以下警告: "performSelector may cause a leak because its selector is unknown". 这是我在做什么: [_controller performSelector:NSSelectorFromString(@"someMethod")]; 为什么会收到此警告?我知道编译器无法检查选择器是否存在,但是为什么会导致泄漏?以及如何更改我的代码,以便不再收到此警告?


30
活动泄漏了最初添加的窗口
这是什么错误,为什么会发生? 05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here 05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.ViewRoot.<init>(ViewRoot.java:231) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.Window$LocalWindowManager.addView(Window.java:424) …

4
什么是专用字节,虚拟字节,工作集?
我正在尝试使用perfmon Windows实用程序来调试进程中的内存泄漏。 这是perfmon解释这些术语的方式: 工作集是此进程工作集的当前大小(以字节为单位)。工作集是进程中的线程最近接触的一组内存页面。如果计算机中的可用内存超过阈值,则即使不使用这些页面,它们也将保留在进程的工作集中。当可用内存低于阈值时,将从“工作集”中修剪页面。如果需要它们,将在离开主存储器之前将它们软故障恢复到工作集中。 虚拟字节是进程正在使用的虚拟地址空间的当前大小(以字节为单位)。使用虚拟地址空间并不一定意味着相应使用磁盘或主内存页面。虚拟空间是有限的,该过程可能会限制其加载库的能力。 专用字节数是该进程已分配的当前无法与其他进程共享的内存大小(以字节为单位)。 这些是我的问题: 我是否应该测量私有字节,以确保该进程是否有泄漏,因为它不涉及任何共享库,并且如果发生泄漏,将来自该进程本身? 进程消耗的总内存是多少?是虚拟字节还是虚拟字节与工作集的总和? 专用字节,工作集和虚拟字节之间是否有任何关系? 是否有其他工具可以更好地了解内存使用情况?



1
什么时候使用(匿名)内部类泄漏安全?
我一直在阅读有关Android内存泄漏的文章,并观看了来自Google I / O的有关该主题的有趣视频。 不过,我还是不完全理解这个概念,尤其是当Activity中的用户内部类是安全或危险的时候。 这是我的理解: 如果内部类的实例生存时间长于外部类(活动),则将发生内存泄漏。-> 在什么情况下会发生这种情况? 在此示例中,我假设不存在泄漏的风险,因为匿名类扩展OnClickListener不会比活动寿命更长,对吗? final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_generic); Button okButton = (Button) dialog.findViewById(R.id.dialog_button_ok); TextView titleTv = (TextView) dialog.findViewById(R.id.dialog_generic_title); // *** Handle button click okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); titleTv.setText("dialog title"); dialog.show(); 现在,这个例子很危险吗?为什么? // We are still …

7
该Handler类应该是静态的,否则可能会发生泄漏:IncomingHandler
我正在开发带有服务的Android 2.3.3应用程序。我在服务内部拥有此功能,可与Main活动进行通信: public class UDPListenerService extends Service { private static final String TAG = "UDPListenerService"; //private ThreadGroup myThreads = new ThreadGroup("UDPListenerServiceWorker"); private UDPListenerThread myThread; /** * Handler to communicate from WorkerThread to service. */ private Handler mServiceHandler; // Used to receive messages from the Activity final Messenger inMessenger = new …

5
Objective-C中的自动引用计数不会阻止或减少哪种泄漏?
在Mac和iOS平台中,内存泄漏通常是由未释放的指针引起的。传统上,检查您的分配,复制和保留以确保每个都有相应的释放消息一直是最重要的。 Xcode 4.2随附的工具链在最新版本的LLVM编译器中引入了自动引用计数(ARC),通过使编译器为您的内容进行内存管理,从而完全解决了此问题。这很酷,并且确实减少了很多不必要的,平凡的开发时间,并防止了许多粗心大意的内存泄漏,这些泄漏很容易通过适当的保留/释放平衡来解决。当为Mac和iOS应用程序启用ARC时,甚至需要对自动释放池进行不同的管理(因为您NSAutoreleasePool不再应该分配自己的s)。 但是,其他的内存泄漏它不能阻止我仍然要注意? 另外,Mac OS X和iOS上的ARC与Mac OS X上的垃圾回收之间有什么区别?

30
内存泄漏可以吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 在C或C ++应用程序中是否存在内存泄漏,这是否可以接受? 如果您分配一些内存并在应用程序的最后一行代码使用之前使用它,该怎么办(例如,全局对象的析构函数)?只要内存消耗不会随着时间增长,是否可以信任操作系统以在应用程序终止时(在Windows,Mac和Linux上)为您释放内存?如果内存一直被使用直到被OS释放,您甚至会认为这是真正的内存泄漏。 如果第三方图书馆将这种情况强加给您怎么办?不管它有多大,都会拒绝使用该第三方库吗? 我只看到一个实际的缺点,那就是这些良性泄漏将在内存泄漏检测工具中显示为误报。
231 c++  c  memory-leaks 

18
检测到可能的EventEmitter内存泄漏
我收到以下警告: (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace: at EventEmitter.<anonymous> (events.js:139:15) at EventEmitter.<anonymous> (node.js:385:29) at Server.<anonymous> (server.js:20:17) at Server.emit (events.js:70:17) at HTTPParser.onIncoming (http.js:1514:12) at HTTPParser.onHeadersComplete (http.js:102:31) at Socket.ondata (http.js:1410:22) at TCP.onread (net.js:354:27) 我在server.js中编写了这样的代码: http.createServer( function (req, res) { ... }).listen(3013); 如何解决?


30
是否有Windows的Valgrind替代品?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 当我发现Valgrind仅适用于Linux时,我正在研究Valgrind,以帮助改善C编码/调试-我对将OS迁移至Linux没有其他需求或兴趣,因此我想知道是否有同样好的Windows程序。

1
AngularJS-$ destroy是否会删除事件监听器?
https://docs.angularjs.org/guide/directive 通过侦听此事件,可以删除可能导致内存泄漏的事件侦听器。注册到范围和元素的侦听器在销毁时会自动清除,但是如果您在服务上注册了侦听器,或者在未删除的DOM节点上注册了侦听器,则必须自己清理或您可能会引入内存泄漏的风险。 最佳实践:指令应自行清理。删除指令后,可以使用element.on('$ destroy',...)或scope。$ on('$ destroy',...)运行清理功能。 题: 我有element.on "click", (event) ->我的指令内: 伪指令销毁后,是否有任何对的内存引用,element.on以防止其被垃圾回收? Angular文档指出,我应该使用处理程序删除$destroy发出的事件上的事件侦听器。我的印象是destroy()删除了事件监听器,不是吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.