Tag: 内存

处理大的xlsx文件

我需要自动适合大(30k +行)xlsx文件中的所有行。 下面的代码通过apache poi在小文件上工作,但是在大文件上出现OutOfMemoryError : Workbook workbook = WorkbookFactory.create(inputStream); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { row.setHeight((short) -1); } workbook.write(outputStream); 更新:不幸的是,增加堆大小不是一个选项 – OutOfMemoryError出现在-Xmx1024m和30k行不是一个上限。

最快的方法将图像转换为字节数组

我正在制作远程桌面共享应用程序,在该应用程序中,我捕获桌面的图像并将其压缩并发送到接收器。 要压缩图像我需要将其转换为一个字节[]。 目前我正在使用这个: 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,并可能会耗尽资源(减慢),以及产生不同的压缩results.I阅读使用Marshal.Copy和memcpy,但我无法了解他们。 那么有没有其他方法可以达到这个目标呢?

指针地址在Cmultidimensional array中

我搞乱了multidimensional array和指针。 我一直在看一个程序,打印出一个简单的数组的内容和地址。 这是我的数组声明: int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5,7} }; 我目前的理解是, zippo是一个指针,它可以保存一些其他指针的地址。 默认情况下, zippo保存指针zippo[0]的地址,也可以保存指针zippo[1] , zippo[2]和zippo[3] 。 现在,采取以下声明: printf("zippo[0] = %p\n", zippo[0]); printf(" *zippo = %p\n", *zippo); printf(" zippo = %p\n", zippo); 在我的机器上,输出如下: zippo[0] = 0x7fff170e2230 *zippo = 0x7fff170e2230 zippo = 0x7fff170e2230 我完全理解为什么zippo[0]和*zippo具有相同的值。 它们都是指针,它们都存储整数2的地址(默认值),或者zippo[0][0] 。 但是zippo什么共享相同的内存地址? zippo不应该存储指针zippo[0]的地址吗? Whaaaat?

以高效的内存方式生成dataframe

根据逐行创buildR数据 data.frame使用rbind附加到data.frame并不理想,因为它每次都会创build整个data.frame的一个副本。 我如何在R累加数据而不会产生这种惩罚? 中间格式不需要是data.frame 。

在Android中解码正确大小的位图

我使用BitmapFactory.decodeFile解码来自SD卡的位图。 有时位图比应用程序需要的或者堆允许的大,所以我使用BitmapFactory.Options.inSampleSize来请求二次采样(较小)的位图。 问题是平台没有强制执行inSampleSize的确切值,而且有时候我得到的位图太小了,或者对于可用内存来说太大了。 从http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize : 注意:解码器将尝试完成这个请求,但是由此产生的位图可能有不同的尺寸,正是所要求的。 另外,2的幂次对于解码器来说通常更快/更容易兑现。 我应该如何解码从SD卡的位图获得我需要的确切大小的位图,而尽可能less的内存来解码它? 编辑: 当前源代码: BitmapFactory.Options bounds = new BitmapFactory.Options(); this.bounds.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, bounds); if (bounds.outWidth == -1) { // TODO: Error } int width = bounds.outWidth; int height = bounds.outHeight; boolean withinBounds = width <= maxWidth && height <= maxHeight; if (!withinBounds) { int newWidth = calculateNewWidth(int width, […]

Python结构的内存大小

是否有关于32位和64位平台上Python数据结构的内存大小的参考? 如果没有,这将是很好的拥有它。 越穷越好! 那么下面的Python结构会使用多less个字节(具体取决于len和相关的内容types)? int float 参考 str unicodestring tuple list dict set array.array numpy.array deque 新式的类对象 旧式的类对象 …而我忘记的一切! (对于仅保留对其他对象的引用的容器,我们显然不希望自己计算该项的大小,因为它可能是共享的。) 而且,有没有办法在运行时获取对象使用的内存(recursion或不)?

Python Django全局variables

我正在寻找简单但推荐的方法在Django中只存储一个variables。 当Apache重新启动或重新启动Django开发服务器时,该variables将重置为0.更具体地说,我要计算每个模型实例(数据库logging)上发生特定操作的次数,但出于性能方面的原因,不想将这些计数存储在数据库中。 我不关心服务器重新启动后计数是否消失。 但只要服务器启动,我希望这些计数在Django shell和Web界面之间保持一致,并且我希望能够返回在每个模型实例上发生了多less次操作。 我不希望variables与用户或会话相关联,因为我可能想要返回这些计数而不login(并且我希望无论用户login的计数是否一致)。 我是在描述一个全局variables吗? 如果是这样,我怎样在Django中使用它? 我注意到像urls.py,settings.py和models.py这样的文件似乎在每个服务器启动时只被parsing一次(相比之下,views.py似乎是在请求发出的时候被parsing的)。 这是否意味着我应该在其中一个文件中声明我的variables? 或者,我应该以某种方式将其存储在模型属性中(只要服务器正在运行,只要它一直存在)? 这可能是一个简单的问题,但我不确定在Django中是如何完成的。 任何意见或build议,非常感谢。 谢谢,乔

class / struct成员是否总是按照声明的顺序在内存中创build?

这是Rob Walker 在这里的答案引发的一个问题。 假设我像这样声明了一个类/结构体: struct { char A; int B; char C; int D; }; 假设这些成员在内存中将按照正确的顺序进行声明是安全的,还是依赖于编译器呢? 我问,因为我一直认为编译器可以做任何想做的事情。 这导致我的下一个问题。 如果上面的例子导致内存alignment的问题,为什么编译器不能把它变成这样的隐式: struct { char A; char C; int B; int D; }; (我主要是问C ++,但我也有兴趣听到C的答案) 相关话题 为什么GCC不优化结构?

我是否达到了浏览器中JavaScript对象的大小限制?

我在我的HTML中的<script>标签embedded一个大数组,像这样(毫不奇怪): <script> var largeArray = [/* lots of stuff in here */]; </script> 在这个特定的例子中,数组有210,000个元素。 这远低于2 31的理论最大值 – 4个数量级 。 下面是有趣的部分:如果我将JS的源代码保存到一个文件中,那么这个文件> 44兆字节(准确的说是46,573,399字节)。 如果你想自己看,你可以从GitHub下载 。 (所有的数据都是jar装的,大量的数据都是重复的,生产中不会这样)。 现在,我真的不关心提供这么多的数据。 我的服务器gzip它的响应,所以它真的不需要很长时间才能通过线路获取数据。 然而,页面一旦加载就会使浏览器崩溃 。 我没有在IE中testing(这是一个内部工具)。 我的主要目标是Chrome 8和Firefox 3.6。 在Firefox中,我可以在控制台中看到一个相当有用的错误: Error: script stack space quota is exhausted 在Chrome中,我只是得到了悲伤标签页面: 已经切入了追逐 这对我们现代的“高性能”浏览器来说真的太多了吗? 有什么我可以做*优雅地处理这么多的数据? 顺便说一下,我可以在Chrome中开启和closures此function(请阅读:不会使标签崩溃)。 我真的认为,铬,至less,是由更棘手的东西,但显然我错了… 编辑1 @蜡笔小新:我并不想certificate我为什么要把这么多的数据一次性转储到浏览器中。 简短的版本:要么我解决这个问题(当然不是那么容易),要么解决其他一些问题。 现在我正在select更简单的方法。 @various:现在,我并不特别想find方法来减less数组中元素的数量。 我知道我可以实现Ajax分页或什么是你,但是在其他方面为我介绍了自己的一系列问题。 @Progrog:每个元素看起来像这样: {dateTime:new Date(1296176400000), […]

如何解决在.NET Webbrowser控件中的内存泄漏?

这是.NET Web浏览器控件的一个广为人知的旧问题。 简介:使用.NET webbrowser控件导航到页面会增加永远不会释放的内存使用量。 重现内存泄漏:将WebBrowser控件添加到窗体。 使用它来导航到任何你想要的网页。 关于:空白作品,在Google图片上滚动直到您的使用率为100MB +,然后在其他地方浏览以注意到几乎没有任何内存被释放是一个更戏剧性的演示。 我目前对应用程序的要求包括长时间运行,显示有限的IE7浏览器窗口。 运行IE7自己的一些混蛋设置的钩子,BHO和组策略也不希望,虽然这看起来像在这个时候的后备。 将浏览器embedded到Windows窗体应用程序中。 使用不同的浏览器基础不是我可用的选项。 IE7是必需的。 以前与这个已知的内存泄漏相关的线程和文章: http://www.vbforums.com/showthread.php?t=644658 如何解决在IE WebBrowser控制内存泄漏? 在多个窗口中使用WPF WebBrowser控件时内存泄漏 http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8/ http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/8a2efea4-5e75-4e3d-856f-b09a4e215ede http://dotnetforum.net/topic/17400-appdomain-webbrowser-memory-leak/ 通常build议的修补程序不起作用: 去不同的页面并不重要。 约:空白触发泄漏。 它不需要一个页面有JavaScript,或任何其他额外的技术。 使用不同版本的Internet Explorer并不重要。 7,8,9都显示相同的症状,据我所知,所有版本都有相同的内存泄漏的控制。 处置()控制不起作用。 垃圾收集没有帮助。 (事实上​​,我已经做了这方面的研究表明泄漏是在Webbrowswer控制包裹的非托pipeCOM代码。) 将进程可用内存最小化并设置为-1,-1(SetProcessWorkingSetSize()或simimlar。)只会减less物理内存使用量,不会影响虚拟内存。 调用WebBrowser.Stop()不是一个解决scheme,并打破使用除静态网页以外的任何function,而不仅仅是稍微减less泄漏。 在导航到另一个文档之前强制等待文档加载完全也无济于事。 将控件加载到单独的appDomain中并不能解决问题。 (我自己并没有这样做,但研究显示其他人没有这个路线的成功。) 使用不同的包装如csexwb2没有帮助,因为这也遭受同样的问题。 清除临时Internet文件caching不做任何事情。 问题是在活动内存中,而不是在磁盘上。 整个应用程序closures并重新启动时,内存将被清除。 我愿意直接在COM或Windows API中编写我自己的浏览器控件,如果这是对问题的肯定修复。 当然,我宁愿不要那么复杂的修复; 我宁愿避免低级别做事情,因为我不想在浏览器支持的function方面重新发明轮子。 Letalone在自己的样式浏览器中复制IE7function和非标准行为。 帮帮我?