Questions tagged «memory»

使用此标签进行内存管理或编程问题。有关内存硬件问题或通用软件中的错误的问题,请访问https://superuser.com或https://serverfault.com(如果这与企业级硬件或软件有关)。

21
为什么地址零用于空指针?
在C(或C ++)中,如果指针的值为零,则它是特殊的:建议释放它们的内存后将指针设置为零,因为这意味着再次释放该指针并不危险;当我调用malloc时,如果无法获取内存,它将返回一个值为零的指针;我if (p != 0)一直在确保传递的指针有效,等等。 但是由于内存寻址从0开始,难道不是0像其他地址一样有效吗?在这种情况下,如何使用0来处理空指针?为什么负数不为null? 编辑: 一堆好答案。我将总结一下我的内心理解后所表达的答案中的内容,并希望如果我误会,社区会纠正我。 像编程中的所有其他内容一样,它是一种抽象。只是一个常数,与地址0无关。C++ 0x通过添加关键字来强调这一点nullptr。 它甚至不是地址抽象,它是C标准所指定的常数,并且编译器可以将其转换为其他数字,只要确保它永远不等于“真实”地址即可,如果0不等于,则等于其他空指针。平台使用的最佳价值。 如果不是早期的抽象,那么系统将使用地址0,而程序员无法使用该地址。 我承认,我的负面建议是有点疯狂的头脑风暴。如果对地址使用带符号的整数会造成一点浪费,这意味着除了空指针(-1或其他值)以外,值空间在构成有效地址的正整数和刚刚浪费的负数之间平均分配。 如果任何数字始终可以用数据类型表示,那么它就是0。(可能也是1。我认为一位整数(如果是无符号的,则为0或1),或者如果签名则只是有符号的位,或者是两位整数将会是[-2,1]。但是您可以将0设为null,将1设为内存中唯一可访问的字节。) 我脑子里仍然有一些未解决的事情。指向特定固定地址的堆栈溢出问题指针告诉我,即使空指针的0为抽象,也不一定需要其他指针值。这导致我发布了另一个堆栈溢出问题,我是否想访问地址零?。
121 c++  c  memory  pointers 


7
Python结构的内存大小
是否有关于32位和64位平台上Python数据结构的内存大小的参考? 如果没有,那么将其放在SO上会很好。越详尽越好!那么以下Python结构使用了多少字节(取决于相关时的len和内容类型)? int float 参考 str unicode字符串 tuple list dict set array.array numpy.array deque 新型类对象 旧式类对象 ...以及我忘记的一切! (对于仅保留对其他对象的引用的容器,我们显然不希望自己计算项目的大小,因为它可能是共享的。) 此外,是否有一种方法可以获取对象在运行时使用的内存(递归与否)?

9
内存泄漏能走多远?
我已经多次遇到内存泄漏。通常,当我- malloc希望没有明天,或者FILE *像脏衣服一样晃来晃去时。我通常认为(拼命:希望)至少在程序终止时才清理所有内存。在程序终止或崩溃时,是否存在无法收集泄漏内存的情况? 如果答案因语言而异,那么让我们关注C(++)。 请注意,短语“好像没有明天”和“晃来晃去……就像脏衣服”一样是双曲线的用法。不安全* malloc可能伤害您所爱的人。另外,请注意不要弄脏衣物。
118 c++  c  memory  memory-leaks 

5
Java使用的内存远大于堆大小(或正确大小的Docker内存限制)
对于我的应用程序,Java进程使用的内存远远大于堆大小。 容器运行所在的系统开始出现内存问题,因为容器占用的内存比堆大小大得多。 堆大小设置为128 MB(-Xmx128m -Xms128m),而容器最多占用1GB的内存。正常情况下需要500MB。如果docker容器的限制低于(例如mem_limit=mem_limit=400MB),则该进程将被操作系统的内存不足杀手杀死。 您能解释一下为什么Java进程使用的内存比堆多得多吗?如何正确调整Docker内存限制的大小?有没有办法减少Java进程的堆外内存占用量? 我使用来自JVM中本机内存跟踪的命令收集了有关此问题的一些详细信息。 从主机系统,我获得了容器使用的内存。 $ docker stats --no-stream 9afcb62a26c8 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 9afcb62a26c8 xx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.0acbb46bb6fe3ae1b1c99aff3a6073bb7b7ecf85 0.93% 461MiB / 9.744GiB 4.62% 286MB / 7.92MB 157MB / 2.66GB 57 从容器内部,获取进程使用的内存。 $ ps -p 71 -o pcpu,rss,size,vsize …
118 java  linux  docker  memory  jvm 


8
Python子进程。Popen“ OSError:[Errno 12]无法分配内存”
注意:此问题最初是在此处提出的,但赏金时间已过,即使实际上未找到可接受的答案。我正在重新询问这个问题,包括原始问题中提供的所有详细信息。 python脚本使用sched模块每60秒运行一组类函数: # sc is a sched.scheduler instance sc.enter(60, 1, self.doChecks, (sc, False)) 该脚本使用此处的代码作为守护进程运行。 在doChecks中调用的许多类方法使用子过程模块来调用系统函数,以获取系统统计信息: ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0] 在整个脚本崩溃并出现以下错误之前,它可以正常运行一段时间: File "/home/admin/sd-agent/checks.py", line 436, in getProcesses File "/usr/lib/python2.4/subprocess.py", line 533, in __init__ File "/usr/lib/python2.4/subprocess.py", line 835, in _get_handles OSError: [Errno 12] Cannot allocate memory 脚本崩溃后,服务器上的free -m输出为: $ free -m …
114 python  linux  memory 

6
MySQL最大内存使用量
我想知道如何在Linux服务器上设置MySQL使用的内存量上限。 现在,MySQL将继续使用每个请求的新查询占用内存,以便最终耗尽内存。有没有办法设置一个限制,使MySQL使用的限制不超过该数量?
111 mysql  memory  ram 

5
如何释放熊猫数据框使用的内存?
我在熊猫中打开了一个非常大的csv文件,如下所示。 import pandas df = pandas.read_csv('large_txt_file.txt') 完成此操作后,内存使用量将增加2GB,这是预期的,因为此文件包含数百万行。我的问题出在我需要释放此内存的时候。我跑了... del df 但是,我的内存使用没有下降。这是释放熊猫数据帧使用的内存的错误方法吗?如果是,正确的方法是什么?
111 python  pandas  memory 

9
减少.NET应用程序的内存使用量?
有什么技巧可以减少.NET应用程序的内存使用?考虑下面的简单C#程序。 class Program { static void Main(string[] args) { Console.ReadLine(); } } 在x64的发布模式下编译并在Visual Studio外部运行,任务管理器报告以下内容: Working Set: 9364k Private Working Set: 2500k Commit Size: 17480k 如果仅针对x86进行编译会更好一些: Working Set: 5888k Private Working Set: 1280k Commit Size: 7012k 然后,我尝试了以下程序,该程序执行相同的操作,但尝试在运行时初始化后减小进程大小: class Program { static void Main(string[] args) { minimizeMemory(); Console.ReadLine(); } private static void …

6
将图像转换为字节数组的最快方法
我正在制作远程桌面共享应用程序,在该应用程序中,我捕获了桌面的图像并将其压缩并将其发送到接收器。要压缩图像,我需要将其转换为byte []。 目前,我正在使用此: public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } public Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } 但是我不喜欢它,因为我必须将其保存在ImageFormat中,这可能还会消耗资源(Slow Down)以及产生不同的压缩结果。了解他们。 那么还有其他方法可以实现这一目标吗?
106 c#  memory  bitmap  bytearray 

8
赋值运算符和复制构造函数有什么区别?
我不明白C ++中的赋值构造函数和复制构造函数之间的区别。就像这样: class A { public: A() { cout << "A::A()" << endl; } }; // The copy constructor A a = b; // The assignment constructor A c; c = a; // Is it right? 我想知道如何分配赋值构造函数和复制构造函数的内存吗?
105 c++  memory 

13
Windows XP上的Java最大内存
我一直能够为在32位Windows XP(Java 1.4、1.5和1.6)上运行的Java SE分配1400 MB的内存。 java -Xmx1400m ... 今天,我在使用Java 1.5_16和1.6.0_07的新Windows XP计算机上尝试了相同的选项,并收到错误消息: Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. 通过反复试验,似乎1200兆字节是我可以在此计算机上分配的最大内存。 有什么想法为什么一台机器允许1400,而另一台只能允许1200? 编辑:机器具有4GB的RAM,Windows可以识别约3.5GB。
103 java  windows  memory 

9
将字节转换为兆字节
我已经看到了三种从字节到兆字节的转换方法: 兆字节=字节/ 1000000 兆字节=字节/ 1024/1024 兆字节=字节/ 1024/1000 好的,我认为#3完全错误,但是我已经看到了。我认为#2是正确的,但是我正在寻找一些受人尊敬的权威机构(例如W3C,ISO,NIST等)来澄清哪个兆字节是真正的兆字节。谁能引用明确说明此计算过程的来源? 额外的问题:如果#2是兆字节,那么#1和#3分别是什么? 顺便说一句:硬盘制造商不算作这方面的权威!

11
如何确定变量的内存占用量(大小)?
PHP(或PHP扩展)中是否有函数来查找给定变量使用多少内存?sizeof只是告诉我元素/属性的数量。 memory_get_usage这有助于我获得整个脚本使用的内存大小。有没有办法对单个变量执行此操作? 请注意,这是在开发机器上,因此加载扩展或调试工具是可行的。
102 php  memory 

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.