Tag: 内存

分段错误和堆栈溢出有什么区别?

例如,当我们调用say,recursion函数时,连续的调用被存储在堆栈中。 但是,如果无限地发生错误,则错误是“分段错误”(如GCC上所示)。 它不应该是“堆栈溢出”? 那么两者的基本区别是什么呢? 顺便说一句,解释将比维基百科链接更有用(通过了,但没有答案的具体查询)。

SQLite的性能基准 – 为什么是:内存:这么慢…只有磁盘的1.5倍速度?

为什么是:内存:在sqlite这么慢? 我一直在试图看看是否有任何使用内存中的sqlite与基于磁盘的sqlite获得的性能改进。 基本上我想交换启动时间和内存来获得非常快速的查询,在应用程序的过程中没有打到磁盘。 但是,下面的基准testing结果只是提高了速度的1.5倍。 在这里,我生成了1M行随机数据,并将其加载到同一个表的磁盘和基于内存的版本中。 然后我在这两个dbs上运行随机查询,返回约300k大小的集合。 我预计基于内存的版本要快得多,但如前所述,我只能获得1.5倍的加速。 我尝试了几个其他大小的数据库和查询集; 内存的好处:似乎随着数据库中行数的增加而增加。 我不确定为什么这个优势太小,尽pipe我有一些假设: 所使用的表格不够大(在行中):内存:一个巨大的赢家 更多的连接/表格将使得:内存:优势更加明显 在连接或操作系统级别上存在某种caching,从而可以以某种方式访问​​先前的结果,从而破坏基准 有什么隐藏的磁盘访问正在进行,我没有看到(我还没有尝试LSF,但我没有closuresPRAGMA的日记) 我在这里做错了什么? 任何想法,为什么:内存:不产生几乎即时查找? 这是基准: ==> sqlite_memory_vs_disk_benchmark.py <== #!/usr/bin/env python """Attempt to see whether :memory: offers significant performance benefits. """ import os import time import sqlite3 import numpy as np def load_mat(conn,mat): c = conn.cursor() #Try to avoid hitting disk, trading safety for […]

C ++ 11 lambda实现和内存模型

我想了解一些关于如何正确思考C ++ 11闭包和std::function的信息,以及它们如何实现以及如何处理内存。 尽pipe我不相信过早的优化,但是在编写新代码的时候,我确实有习惯认真考虑我的select对性能的影响。 我也做了相当数量的实时编程,例如在微控制器和audio系统上,要避免非确定性内存分配/释放暂停。 因此,我想更好地了解何时使用或不使用C ++ lambdaexpression式。 我目前的理解是,没有捕获闭包的lambda完全像Ccallback。 但是,当通过值或引用捕获环境时,会在堆栈上创build一个匿名对象。 当一个函数必须返回一个值闭包时,它会把它包装在std::function 。 在这种情况下closures内存会发生什么? 它是从堆栈复制到堆? 每当std::function被释放时它是否被释放,也就是说,它是否像std::shared_ptr一样被引用计数? 我想在一个实时系统中,我可以设置一个lambda函数链,将B作为延续parameter passing给A,以便创build一个处理pipe道A->B 在这种情况下,A和Bclosures将被分配一次。 虽然我不确定这些是否会被分配在堆栈或堆上。 但是总的来说,这在实时系统中似乎是安全的。 另一方面,如果B构造了一些返回的lambda函数C,那么C的内存将被重复地分配和释放,这对于实时使用是不可接受的。 在伪代码中,我认为将是一个实时安全的DSP环路。 我想执行处理块A然后B,其中A调用它的参数。 这两个函数都返回std::function对象,所以f将是一个std::function对象,其环境存储在堆中: auto f = A(B); // A returns a function which calls B // Memory for the function returned by A is on the heap? // Note that A and B may […]

如何清除MemoryCache?

我已经使用MemoryCache类创build了一个caching。 我添加一些项目,但是当我需要重新加载caching我想先清除它。 什么是最快的方法来做到这一点? 我应该循环所有的项目,并一次删除一个或有更好的办法吗?

在Android中显示巨大的图像

我打算在Android中显示非常大的图像。 我的第一个解决scheme – 以pdf的forms提供 – 没有成功,因为并不是每个手持设备都预装了pdf查看器,而且我也不想要求用户安装。 所以我现在有一个PNG (宽= 3998px高= 2827px) ,我想要显示。 我下载了这个图像来testing它将如何显示在画廊上。 这是相当痛苦的。 看来这个画面只能渲染一次,如果我放大,我根本看不懂。 所以我写了一个testActivity,它只是一个embedded在LinearLayout中的ImageView。 我把图像放入drawable中,并将其设置为ImageView的图像源。 不幸的是,应用程序立即崩溃,由于“ ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget" 我没想到,单个镜像对于VM's memory可能太大了。 我玩了一下,把ImageViews大小设置为3998 & 2827px ,把Image放到sdCard ,用fileInputStream手动读取。 令我大吃一惊的是,它现在显示了我的图像,但是如果我将Nexus S水平翻转,我会得到和以前一样的OutOfMemoryError 。 有些人可能会指出通过FileInputStream接收Bitmap或将其设置为ImageView's源代码之间的主要区别。 此外,我不能够舒适地与两个父scrollViews 我寻找一个简单的解决scheme,一次显示ONE large image ,能够scroll horizontal and vertical同时可以放大和缩小。 这里是我想要显示的图像的示例

内存布局C ++对象

我基本上想知道C ++如何在内存中展示对象。 所以,我听到dynamic转换简单地调整对象的指针在内存中的偏移量; 并重新解释types允许我们用这个指针做任何事情。 我真的不明白这一点。 详情将不胜感激!

用于Firefox的Javascript内存分析器

有没有Firefox的工具/插件/function,它会转储您在页面/脚本中创build的JavaScript对象的内存使用情况? 我知道Firebug的分析器,但是我想要的不仅仅是时间。 类似于Yourkit用于Java分析内存使用情况的东西。 原因是,一个同事在一个数组中使用ID作为“密钥”,并且正在创build1000个空插槽。 他认为这是无害的,而我的意见不同。 我想提供一些证据来certificate我是否正确。

指向引用的指针和引用指针之间的区别

指向引用的指针,指向C ++指针的指针和指针有什么区别? 在哪里应该比另一个更受欢迎?

增加Tomcat的内存设置

可能重复: 处理“java.lang.OutOfMemoryError:PermGen空间”错误 我在我的开发机器上有8GB内存,并且试图运行Apache Tomcat(7.0.29)同时托pipeArtifactory (2.6.3)和Jenkins (1.479)。 我试图findjenkins的内存要求,但看起来他们的维基已经closures。 在${TOMCAT_HOME}/bin/catalina.sh ,我添加了以下命令: CATALINA_OPTS="$CATALINA_OPTS -server -Xms1024m -Xmx3052m" 这应该使Tomcat的JVM保持在(基本上)1到3 GB之间,为我们留下了足够的空间来存放其他东西,给Tomcat足够的内存给Artifactory / Jenkins,甚至还有其他的需要。 (为了得到相同的结果,我已经尝试了与JAVA_OPTS相同的function)。 我保存该更改并运行startup.sh 。 Tomcat开始启动,然后与OOME一起抱怨Tomcat已经用完了PermGen空间: Exception in thread "SocketListener(<hex-stuff>.local.)" java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space Exception in thread "hudson initialization thread" java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space 我要去哪里呢? 我已经阅读了多篇关于如何做到这一点的文章(相信!),我正在关注它们。 任何想法,或想法如何我可以进一步debugging呢? 提前致谢!

iPhone – dealloc – 释放与无

想知道是否有经验的人可以解释这一点。 我见过的例子… [view release]; view = nil; ….(void)dealloc中。 有什么区别,是另一个更好呢? 什么是最好的方法? 在进行retainCounttesting的时候,我个人看到nil从3降到0,但是release只是从3降到2。