Questions tagged «memory-management»

动态分配和释放部分物理内存的过程,以响应程序请求(如果可能),请求者之间保持公平且无饥饿。

11
在JavaScript中删除对象
我对JavaScript的delete运算符有些困惑。采取以下代码: var obj = { helloText: "Hello World!" }; var foo = obj; delete obj; 执行完这段代码后,objis null,但foo仍指的是一个完全像的对象obj。我猜这个对象是foo指向相同的对象。 这使我感到困惑,因为我希望编写会delete obj删除obj指向内存中的对象,而不仅仅是变量obj。 这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它会从内存中清除? (顺便说一下,我的测试是在Safari 4中完成的。)





13
malloc()和free()如何工作?
我想知道如何malloc和free工作。 int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } 如果可能的话,我很感激如果答案在内存级别。

14
如何释放Inode使用率?
我有一个inode使用率为100%(使用df -i命令)的磁盘驱动器。但是,在实质上删除文件后,使用率仍为100%。 那么正确的方法是什么? 与磁盘空间使用量较高的磁盘驱动器相比,磁盘空间使用量较小的磁盘驱动器如何可能具有更高的Inode使用率? 如果我压缩大量文件,是否有可能减少使用的inode数量?

12
Python进程使用的总内存?
Python程序是否有办法确定当前正在使用多少内存?我已经看到了有关单个对象的内存使用情况的讨论,但是我需要的是该过程的总内存使用情况,以便可以确定何时需要开始丢弃缓存的数据。



10
可以删除吗?
是否允许delete this;delete-statement是将在该类实例上执行的最后一条语句?当然,我确定this-pointer 表示的对象是正确new创建的。 我正在考虑这样的事情: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over to a new Module, eg: controller->setWorkingModule(new OtherModule()); // since the new "OtherModule" object will take the lead, // I want to get rid …

1
.so,.la和.a库文件有什么区别?
我知道.so文件是一种动态库(很多线程可以共享这样的库,因此在内存中不需要多个副本)。但是.a和之间有什么区别.la?这些都是静态库吗? 如果动态库比静态库具有很大的优势,那么为什么仍然有很多静态库? 我还想知道加载库(两种)的基本机制,以及在某处使用lib时如何调用一段代码。我应该学习内核的哪一部分?我应该了解什么相关的Linux命令/实用程序才能知道进程如何运行?(我现在只知道ld命令) 什么时候应该尝试将代码内置到.so或中.a?哪一个更好? [mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l total 96 -rw-r--r-- 1 mirror mirror 22892 Sep 2 23:25 openvpn-plugin-auth-pam.a -rwxr-xr-x 1 mirror mirror 931 Sep 2 23:25 openvpn-plugin-auth-pam.la -rwxr-xr-x 1 mirror mirror 23621 Sep 2 23:25 openvpn-plugin-auth-pam.so -rw-r--r-- 1 mirror mirror 17228 Sep 2 23:25 openvpn-plugin-down-root.a -rwxr-xr-x 1 mirror …


7
为什么ARC仍需要@autoreleasepool?
在大多数情况下,对于ARC(自动引用计数),我们根本不需要考虑使用Objective-C对象进行内存管理。不再允许创建NSAutoreleasePool,但是有一个新语法: @autoreleasepool { … } 我的问题是,当我不应该手动释放/自动释放时,为什么会需要这个? 编辑:总结一下我从所有答案和评论中得出的结论: 新语法: @autoreleasepool { … } 是的新语法 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; … [pool drain]; 更重要的是: ARC使用autorelease和release。 为此需要一个自动释放池。 ARC不会为您创建自动发布池。然而: 每个Cocoa应用程序的主线程中已经有一个自动释放池。 在两种情况下,您可能想使用@autoreleasepool: 当您处于辅助线程中并且没有自动释放池时,必须进行自己的设置以防止泄漏,例如myRunLoop(…) { @autoreleasepool { … } return success; }。 当您希望创建更多本地池时,如@mattjgalloway在其答案中所示。

15
在.NET中使用后将对象设置为Null / Nothing
完成所有对象后,是否应该将所有对象都设置为null(Nothing在VB.NET中)? 我知道,在.NET中,处置实现IDisposable接口以释放一些资源的对象的任何实例都是至关重要的,尽管该对象在处置后仍然可以是某种东西(因此isDisposed表单中的属性),因此我认为它仍然可以驻留在内存中还是至少有一部分? 我也知道,当一个对象超出范围时,它会被标记为可以进行下一次垃圾收集器的收集(尽管这可能需要一些时间)。 因此,考虑到这一点,将对其进行设置以null加快系统释放内存的速度,因为不必确定它已不在范围之内,并且它们是否会产生不良影响? MSDN文章从不在示例中执行此操作,目前我这样做是因为我看不到危害。但是,我遇到了多种意见,因此任何评论都是有用的。

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.