标签: memory-management

如何使用C++在运行时获取内存?

我需要在我的程序运行时获取mem使用VIRT和RES并显示它们.

到目前为止我尝试了什么:

getrusage(http://linux.die.net/man/2/getrusage)

int who = RUSAGE_SELF; 
struct rusage usage; 
int ret; 

ret=getrusage(who,&usage);

cout<<usage.ru_maxrss;
Run Code Online (Sandbox Code Playgroud)

但我总是0.

c++ linux memory-management

79
推荐指数
6
解决办法
14万
查看次数

如何防止java.lang.OutOfMemoryError:Scala编译中的PermGen空间?

我注意到我的scala编译器有一种奇怪的行为.它在编译类时偶尔会抛出OutOfMemoryError.这是错误消息:

[info] Compiling 1 Scala source to /Users/gruetter/Workspaces/scala/helloscala/target/scala-2.9.0/test-classes...
java.lang.OutOfMemoryError: PermGen space
Error during sbt execution: java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)

它只会偶尔发生一次,并且通常不会在随后的编译运行中抛出错误.我使用Scala 2.9.0并通过SBT编译.

有没有人知道造成这个错误的原因是什么?提前感谢您的见解.

memory-management scala sbt scalatra-sbt apache-spark

79
推荐指数
5
解决办法
2万
查看次数

Python有堆栈/堆,内存管理方式如何?

如何在Python中管理变量和内存?它是否有堆栈和堆以及用于管理内存的算法?鉴于这方面的知识有关于大数据/数据处理的内存管理的任何建议吗?

python memory memory-management

79
推荐指数
2
解决办法
5万
查看次数

烫发空间与堆空间

首先,Perm空间和堆空间之间有什么区别(JVM选择使用每个内存空间的内容和方式)?

其次,但最重要的是,对于标准MVC类型的Java应用程序,建议使用什么样的比率?

java performance memory-management

78
推荐指数
2
解决办法
7万
查看次数

__weak和__block引用有什么区别?

我正在阅读Xcode的文档,这里有些令我困惑的事情:

__block typeof(self) tmpSelf = self;
[self methodThatTakesABlock:^ {
    [tmpSelf doSomething];
}];
Run Code Online (Sandbox Code Playgroud)

从文档中复制以下内容:

块形成对其捕获的变量的强引用.如果self在块中使用 ,则块形成强引用self,因此如果 self还具有对块的强引用(通常它具有),则会产生强引用循环.要避免循环,您需要__block在块外部创建一个弱(或)引用,如上例所示.

我不明白'弱(或__block)'是什么意思?

__block typeof(self) tmpSelf = self;
Run Code Online (Sandbox Code Playgroud)

__weak typeof(self) tmpSelf = self;
Run Code Online (Sandbox Code Playgroud)

这里完全一样吗?

我在文件中找到了另一篇文章:

注意:在垃圾收集环境中,如果将两个__weak__block修饰符都应用于变量,则该块将无法确保它保持活动状态.

所以,我完全不解.

memory-management weak-references objective-c ownership objective-c-blocks

77
推荐指数
2
解决办法
3万
查看次数

C++中向量的初始容量

什么是capacity()std::vector这是使用默认constuctor产生的?我知道这size()是零.我们可以声明默认构造的向量不会调用堆内存分配吗?

这样就可以使用单个分配创建一个具有任意保留的数组,例如std::vector<int> iv; iv.reserve(2345);.让我们说出于某种原因,我不想size()在2345年开始.

例如,在Linux上(g ++ 4.4.5,内核2.6.32 amd64)

#include <iostream>
#include <vector>

int main()
{
  using namespace std;
  cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

印刷0,10.这是规则,还是STL供应商依赖?

c++ memory-management stl vector

77
推荐指数
5
解决办法
5万
查看次数

如果32位整数溢出,我们可以使用40位结构而不是64位长结构吗?

例如,如果一个32位整数溢出,而不是升级intlong,如果我们需要一个仅在2 40之内的范围,我们可以使用一些40位类型,这样我们就可以节省24(64-40)位整数?

如果是这样,怎么样?

我必须处理数十亿和空间是一个更大的约束.

c c++ memory-management integer-overflow

76
推荐指数
10
解决办法
1万
查看次数

"内存不足"是一个可恢复的错误?

我已经编程了很长时间,我看到的程序,当它们内存不足时,会尝试清理并退出,即优雅地失败.我不记得上次我看到一个人真正尝试恢复并继续正常运行.

如此多的处理依赖于能够成功分配内存,特别是在垃圾收集语言中,似乎内存不足错误应归类为不可恢复.(不可恢复的错误包括堆栈溢出等.)

使其成为可恢复错误的令人信服的理由是什么?

language-agnostic memory memory-management exception error-recovery

74
推荐指数
7
解决办法
7950
查看次数

是否可以调试"由于内存错误而终止"?

在我的应用程序运行时的某个(一致)点,我一直收到xcode错误消息

由于内存错误而终止.

我找不到导致错误的代码,但我可以告诉错误附近的代码(使用断点).

在我的实现中返回某个单元格后直接导致错误

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

UITableViewDataSource委托方法.我可以确认它返回有效UITableViewCell,但我认为解释和发布整个方法将浪费你的时间.但是,我怀疑它可能是由快速,大量的内存分配引起的.

它肯定说Terminated due to memory error,而不是记忆压力.

我想知道什么是信息真的意味着什么.另外,有没有办法调试此消息?没有生成崩溃报告.

我正在使用ARC和iOS 7.

memory-management objective-c ios automatic-ref-counting

74
推荐指数
6
解决办法
8万
查看次数

为什么堆栈内存大小如此有限?

在堆上分配内存时,唯一的限制是可用RAM(或虚拟内存).它使Gb成为记忆.

那么为什么堆栈大小如此有限(约1 Mb)?什么技术原因阻止你在堆栈上创建真正的大对象?

更新:我的意图可能不明确,我不想在堆栈上分配大对象,我不需要更大的堆栈.这个问题只是纯粹的好奇心.

c++ memory-management

73
推荐指数
5
解决办法
2万
查看次数