memory-management相关内容

将 realloc() 返回的地址分配给同一个指针是一种好的编码习惯吗?

我在一些网站上看到了一些与 realloc() 相关的代码,如下所示. int *p = (int *)malloc(sizeof(int) * 10);p = (int *)realloc(p, 100); 但正如标准所说,如果 realloc 失败,原始块保持不变并返回 NULL. 所以如果 realloc 失败,从上面的例子中,我们将失去释放 p 的能力.谁能告诉我将 reallo ..
发布时间:2022-01-19 14:54:07 其他开发

使用 subprocess.Popen 的 Python 内存分配错误

我正在做一些生物信息学工作.我有一个 python 脚本,它有时会调用一个程序来执行一个昂贵的过程(序列对齐......使用大量的计算能力和内存).我使用 subprocess.Popen 调用它.当我在测试用例上运行它时,它完成并完成得很好.但是,当我在完整文件上运行它时,它必须为不同的输入集多次执行此操作,它就会死掉.子进程抛出: OSError: [Errno 12] 无法分配内存 我找 ..
发布时间:2022-01-18 15:42:55 Python

您应该在使用委托的类中还是在类本身中将委托设置为 nil

如果 A 类使用 B 类,A 类是 B 类的委托,如果委托在 B 类的 dealloc 中设置为 nil 可以吗?我看到代码通常在 A 类的 dealloc 中将委托重置为 nil,但不确定以一种或另一种方式执行此操作的真正区别. 例如这是通常的方式: //A 类中的某处-(无效)someFunc {self.b = [[B alloc] 初始化];self.b.delegate = 自我 ..
发布时间:2022-01-18 12:26:55 移动开发

iOS:“单向"的最佳实践导航控制器?

我正在开发一个应用程序,该应用程序本质上是一系列不同的测试(为简单起见,请考虑 SAT 测试或 Mensa 测试).每个测试都在不同的 View+View Controller 中实现. 最初我想使用 Storyboards 和 UINavigationControllers 来管理测试的顺序和它们之间的转换,但现在我质疑这种方法的有效性.UINavigationController 是一个 ..

@synthesized 保留属性的释放是如何处理的?

我对 Objective-C 中的综合属性有一些疑问.完整列表如下,但基本问题是:编译器如何确保合成属性的 ivars 被正确释放,即使我的代码可能包含也可能不包含在 dealloc 中的释放方法? 注意:我决定不将这些问题作为单独的问题发布,因为它们之间的关系非常密切,并且因为现有的一些问题触及个别问题而没有真正触及问题的核心问题. 有些类似的问题: 财产保留是否需要释放? ..

Java中为一个Integer对象分配多少内存?如何找出任何自定义对象的这个值?

衡量应该使用堆中多少内存来创建特定类型的新对象的正确方法是什么(让我们谈谈整数以保持简单)? 这个值可以不用实验计算出来吗?这种情况下的规则是什么?这些规则是否在某处严格指定,或者它们可能因 jvm 而异? 解决方案 它可能因JVM而异. 您可能会喜欢 Oracle 工程师的这篇博文: 对于 32 位 Hotspot JVM 上的 Java Integer,32 位有效负 ..
发布时间:2022-01-16 12:44:23 Java开发

使用大量内存的 Java 应用程序.使用-Xmx?

我有一个 java 应用程序,它在 16G 的机器上使用大约 15G.我不知道是否应该设置最大堆大小. 如果设置了 jvm 是否会吃掉所有的内存,然后开始垃圾收集并在它翻腾 15G 的堆对象时停止一切? 如果不是这样,jvm 会因为不使用机器上所有可用的内存而损害性能. 我的特定虚拟机是:Java HotSpot(TM) 64 位服务器虚拟机(内部版本 1.6.0_03-b05, ..
发布时间:2022-01-16 12:43:19 Java开发

Java 非堆内存和栈内存有什么区别?它们是否相同,如果不同,它们之间有什么区别?

我正在使用 Jconsole 来监控 Java 应用程序.内存选项卡显示不同的堆和非堆内存,例如 堆内存使用情况 非堆内存使用情况 内存池“CMS Old Gen" 内存池“Par Eden Space" 内存池“Par Survivor Space" 内存池“代码缓存" 内存池“CMS Perm Gen" 这些术语之间有什么区别.还请提供一些关于 - 如何通过监控这些参数 ..
发布时间:2022-01-16 12:35:42 Java开发

方法区和 PermGen

我试图了解 HotSpot JVM 的内存结构,但对 “方法区" 和 “PermGen" 空间这两个术语感到困惑.我提到的文档说方法区包含类和方法的定义,包括字节码.其他一些文档说它们存储在 PermGen 空间中. 那么我可以断定这两个内存区域相同吗? 解决方案 你应该看看 Java 内存类型 以及关于 ..
发布时间:2022-01-16 12:34:32 Java开发

Java VM - 释放的内存是否返回到操作系统?

在 Java 运行时,如果我的应用程序释放内存,运行时是否会将内存释放回操作系统?还是回到我的流程? 解决方案 这取决于JVM实现,规范中没有指定. Sun JVM 将保留它作为第一步.一旦分配的内存的某个(可配置)百分比未使用,它会将其中的一部分返回给操作系统(该行为受 MinHeapFreeRatio 和 MaxHeapFreeRatio 设置). ..
发布时间:2022-01-16 12:30:20 Java开发

Java中创建的OutOfMemoryError对象在哪里

OutOfMemoryError 当堆没有足够的内存来创建新对象时发生.如果堆没有足够的内存,OutOfMemoryError 对象在哪里创建.我正在努力理解这一点,请指教. 解决方案 当然,这是一个依赖于实现的行为.HotSpot 有一些普通分配无法访问的堆内存,JVM 可以用来构造一个 OutOfMemoryError .但是,由于 Java 允许任意数量的线程,任意数量的线程可能同时 ..
发布时间:2022-01-16 12:29:17 Java开发

理解 JVM 内存分配和 Java 内存不足:堆空间

我正在研究如何真正了解 JVM 中的内存分配是如何工作的.我正在编写一个内存不足的应用程序:堆空间异常. 我知道我可以传入 VM 参数(例如 Xms 和 Xmx)来增加 JVM 为正在运行的进程分配的堆空间.这是问题的一种可能解决方案,或者我可以检查我的代码是否存在内存泄漏并在那里解决问题. 我的问题是: 1) JVM 实际上是如何为自己分配内存的?这与操作系统如何将可用内存传递 ..
发布时间:2022-01-16 12:12:13 Java开发

JVM 压缩 Oops 背后的技巧

所以我知道 HotSpot VM 现在默认启用压缩 oops.从 Java SE 6u23 开始,它通过 VM 选项 -XX:+UseCompressedOops 对此提供了支持.我知道它允许有效地利用 CPU 缓存,因为 CPU 缓存可以容纳更多的引用,而不是它们必须处理 64 位大小的引用.但我不明白的是,仅使用 32 位 JVM 可以寻址多达 264 个地址. 为了简化问题,我们如何仅 ..
发布时间:2022-01-16 12:08:23 Java开发

为什么是锯齿形图形?

当我使用 NetBeans 运行下面提到的代码时,分配的堆大小图类似于锯齿形状.我附上了 JVisualVM 的屏幕截图,它以锯齿形显示了堆分配图.该程序是一个打印“Hello, World!"的简单无限循环.进入控制台. 公共类 HelloWorld {公共静态无效主要(字符串一个[]){而(真){System.out.println("你好,世界!");}}} 任何人都可以解释使用堆图形状 ..
发布时间:2022-01-16 12:00:21 Java开发

Java 内存解释 (SUN JVM)

我试图找到对 sun java vm 内存段的解释,这也是管理员可以理解的.它应该解释什么是堆/非堆内存以及不同内存池的意义. 如果它以某种方式与 jconsole 视图相关,那将是一个奖励. 有没有这样解释的网站? 解决方案 这是我记下的资源列表.其中一些解释了堆/垃圾收集的工作原理,而另一些则详细介绍了如何配置所有内容. IBM 垃圾回收是如何工作的? 垃圾回 ..
发布时间:2022-01-16 11:59:05 Java开发