Questions tagged «memory»

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

4
Java中的内存流
我正在寻找Java中的内存流实现。该实现应在.NET内存流实现之后大致建模。 基本上,我想拥有一个MemoryStream必须使用工厂方法的类: class MemoryStream { MemoryInput createInput(); MemoryOutput createOutput(); } class MemoryInput extends InputStream { long position(); void seek(long pos); } class MemoryOutput extends OutputStream { long position(); void seek(long pos); } 因此,一旦有了该类的实例,MemoryStream我就应该能够并发地同时创建输入和输出流,这也应该允许在任何方向上定位。内存流不必是循环的,它应该可以很好地用于小尺寸并自动增长。内存流仅需要限制在一个进程中。 有没有可用的现成代码?
69 java  memory  stream  seek 

4
内存错误和列表限制?
为了科学目的,我需要产生越来越大的(非常)矩阵(马尔可夫链)。我执行微积分,将其放入20301个元素的列表中(=矩阵的一行)。我需要将所有这些数据存储在内存中以继续进行下一步的马尔可夫步骤,但是如果需要,我可以将它们存储在其他位置(例如文件),即使这会减慢我的马尔可夫链的遍历速度。我的电脑(科学实验室):双氙气6个内核/ 12个线程,12GB内存,操作系统:win64 Traceback (most recent call last): File "my_file.py", line 247, in <module> ListTemp.append(calculus) MemoryError 微积分结果示例:9.233747520008198e-102(是,超过1/9000) 存储第19766个元素时会引发错误: ListTemp[19766] 1.4509421012263216e-103 如果我走得更远 Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> ListTemp[19767] IndexError: list index out of range 因此,此列表在19767循环中发生了内存错误。 问题: 列表有内存限制吗?是“按列表限制”还是“按脚本全局限制”? 如何绕过那些限制?有什么想法吗? 使用numpy,python64是否有帮助?它们的内存限制是多少?那其他语言呢?
68 python  list  memory  limits 

6
我是否已达到浏览器中JavaScript可以处理的对象大小的限制?
我<script>在HTML的标签中嵌入了一个大型数组,就像这样(不足为奇): <script> var largeArray = [/* lots of stuff in here */]; </script> 在此特定示例中,数组具有210,000个元素。这远远低于2的理论最大值31 -由4个数量级。这是有趣的部分:如果我将数组的JS源代码保存到文件中,则该文件> 44兆字节(准确地说是46573399字节)。 如果您想亲自看看,可以从GitHub下载。(其中的所有数据都是固定的,因此会重复很多。在生产环境中不会如此。) 现在,我真的不担心要提供那么多数据。我的服务器通过gzip压缩其响应,因此实际上并不需要花很长时间就能通过网络获取数据。但是,页面一旦加载,就会导致浏览器崩溃。我根本没有在IE中测试(这是一个内部工具)。我的主要目标是Chrome 8和Firefox 3.6。 在Firefox中,我可以在控制台中看到一个相当有用的错误: Error: script stack space quota is exhausted 在Chrome中,我只是获得了悲伤标签页: 切入正题 对于我们现代的“高性能”浏览器来说,这真的是太多数据了吗? 我可以做些什么来优雅地处理大量数据? 顺便说一句,我能够在Chrome中断断续续地使用它(阅读:不会使选项卡崩溃)。我真的以为Chrome至少是由更坚固的材料制成的,但显然我错了…… 编辑1 @Crayon:我并不想证明为什么我想一次将大量数据转储到浏览器中。简短的版本:要么我解决了这个(绝对不那么容易)的问题,要么我不得不解决一系列其他问题。我现在选择较简单的方法。 @various:现在,我不是特别在寻找减少数组中元素数量的方法。我知道我可以实现Ajax分页或具有什么功能,但这在其他方面为我带来了自己的一系列问题。 @Phrogz:每个元素看起来像这样: {dateTime:new Date(1296176400000), terminalId:'terminal999', 'General___BuildVersion':'10.05a_V110119_Beta', 'SSM___ExtId':26680, 'MD_CDMA_NETLOADER_NO_BCAST___Valid':'false', 'MD_CDMA_NETLOADER_NO_BCAST___PngAttempt':0} @Will:但是我有一台带有4核处理器,6 GB RAM,超过一半TB磁盘空间的计算机...我什至不要求浏览器快速执行此操作-我只是在问为它工作!☹ 编辑2 任务完成! 有了Juan和Guffa的即时建议,我得以使它起作用!看来问题出在解析源代码,而不是在内存中实际使用它。 …


3
确定iOS设备上的可用RAM量
您可能已经看到了许多“系统信息”应用程序,这些应用程序显示诸如剩余电池寿命,甚至是诸如内存等系统信息。 以类似的方式,是否有任何方法可以从我的应用程序中检索当前的可用RAM量,以便我可以更好地决定何时最好转储或保留某些视图以避免内存警告?

12
由于.NET具有垃圾回收器,为什么我们需要终结器/析构函数/处置模式?
如果我理解正确,.net运行时将始终在我之后清理。因此,如果我创建新对象并且停止在代码中引用它们,则运行时将清理这些对象并释放它们占用的内存。 既然是这种情况,那么为什么某些对象需要具有析构函数或dispose方法?当不再引用它们时,运行时是否会清理它们?

1
为什么C ++中类的大小取决于数据成员的公共/私有状态?
据我所知,C ++中类的大小取决于以下因素: 所有非静态数据成员的大小。 数据成员的顺序。 是否启用字节填充。 其直接基类的大小。 虚拟功能的存在。 继承方式(虚拟继承)。 现在,我创建了两个类,如下所示: class A{ int a; short s; int b; char d; };// kept a char at last on purpose to leave a "hole" class B : public A{ char c; }; 现在检查A和BI的大小,请参见 A的大小:16 B的大小:16 我的假设是B类中的字符c容纳在A类中剩余的“空洞”中。 但是,令我感到困惑的是以下情况,其中我将成员公开 class A{ public: int a; short …

3
static int arr [10]存储器地址始终以060结尾
我有一个看起来像这样的交流程序 main.c #include <stdio.h> #define SOME_VAR 10 static int heap[SOME_VAR]; int main(void) { printf("%p", heap); return 0; } 并在运行编译程序几次后输出 0x58aa7c49060 0x56555644060 0x2f8d1f8e060 0x92f58280060 0x59551c53060 0xd474ed6e060 0x767c4561060 0xf515aeda060 0xbe62367e060 为什么总是以060结尾?数组是否存储在堆中? 编辑:我在Linux上,并且我有ASLR。我用gcc编译了程序
17 c  arrays  memory 

1
1 MB或更大的Java字节数组占用RAM的两倍
在Windows 10 / OpenJDK 11.0.4_x64上运行下面的代码会作为输出used: 197和输出expected usage: 200。这意味着200个字节数组(一百万个元素)占用了大约。200MB RAM。一切都很好。 当我将代码中的字节数组分配从new byte[1000000]更改为new byte[1048576](即更改为1024 * 1024个元素)时,它会作为输出used: 417和产生expected usage: 200。有没有搞错? import java.io.IOException; import java.util.ArrayList; public class Mem { private static Runtime rt = Runtime.getRuntime(); private static long free() { return rt.maxMemory() - rt.totalMemory() + rt.freeMemory(); } public static void main(String[] args) throws InterruptedException, …

1
Java“ Foo f = new Foo()”中的对象初始化与使用malloc作为C语言中的指针是否基本相同?
我试图了解Java中对象创建背后的实际过程-并且我想使用其他编程语言。 假定Java中的对象初始化与对C中的结构使用malloc相同是错误的吗? 例: Foo f = new Foo(10); typedef struct foo Foo; Foo *f = malloc(sizeof(Foo)); 这就是为什么说对象位于堆而不是堆栈上的原因吗?因为它们本质上只是数据指针?
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.