标签: ram

即使对于小程序,Java内存使用率也很高

我有几个用java编写的简单应用程序,其中一个被编写为一个小部件.甚至小应用程序使用多少内存让我感到惊讶.

我写了以下内容,看看它是否是我的程序中的错误,或者是一般的Java问题:

public class ram {
    public static void main(String[] args){
    while(true)System.out.print("Hello World");//while loop to give me time to check RAM usage
    }
}
Run Code Online (Sandbox Code Playgroud)

然后编译并运行它,java ram它给了我以下RAM使用情况:

The process java (with pid 4489) is using approximately 43.3 MB of memory.
34460 KB    [heap]
7088 KB /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/server/libjvm.so
1712 KB /usr/lib/jvm/java-7-openjdk/jre/lib/rt.jar
136 KB  [stack:4495]
120 KB  /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/libjava.so
Run Code Online (Sandbox Code Playgroud)

这不是太高了吗?特别是一堆34MB.我的系统是ArchLinux x86_64和openjdk-7.

有没有办法最小化JVM使用的RAM量?

编辑:我尝试使用-Xmx标志,这就是我得到的(1281k是最小的让我开始):

java -Xmx1281k ram
The process java (with pid 4987) is using approximately 27.6 MB of memory.
18388 KB    [heap] …
Run Code Online (Sandbox Code Playgroud)

java memory ram

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

如何实现AVX2中的收集指令?

假设我正在使用AVX2的VGATHERDPS - 这应该使用8个DWORD索引加载8个单精度浮点数.

当要加载的数据存在于不同的缓存行中时会发生什么?指令是作为硬件循环实现的,它逐个获取缓存行吗?或者,它是否可以立即向多个缓存行发出负载?

我读了几篇论述前者的文章(这是对我更有意义的文章),但我想更多地了解这一点.

链接到一篇论文:http://arxiv.org/pdf/1401.7494.pdf

ram intel simd avx avx2

23
推荐指数
2
解决办法
5205
查看次数

SQL Server实际使用了多少RAM?

我正在调试我的一个应用程序,并注意到我的SQL Server 2005 x64框(在Windows 2003 R2 x64上运行)上的RAM被挂起,甚至进入页面文件.

我知道SQL Server 2005 x64只是抓住它可以做的一切,所以这可能是正常的(???).如何查看实际使用的内存量?

ram sql-server-2005

22
推荐指数
2
解决办法
15万
查看次数

Android内存类型(RAM v内存)

在一个单独的线程中,我通过询问将文件复制到"内部存储器"的最佳方法来证明我对内存类型的无知,并且被告知这不是一个好主意,并且最好将文件读入"RAM" .我现在试图了解这两种类型的内存是如何相关的以及如何使用它们.

我理解"内部存储器被认为是用于存储APK,ROM图像等的闪存".

我的HTC Hero的规格说有"ROM:512MB,RAM:288MB",没有说明RAM是如何细分的.

在电话上,"设置" - >"SD和电话存储"页面只是指"SD卡"和"内部电话存储",后者只显示"可用空间"的一个数量.

Android 数据存储参考提到了"内部存储".这是"你可以保存文件"的地方.该页面还提到了我认为可以存储在"内部存储"中的SQLite数据库文件.但是,该页面似乎没有提供任何有关内部存储与另一种(可能是更动态的)类型之间的RAM细分的解释.

是否有一种动态划分总RAM(Hero上的288MB)为两个子部分,可以以不同的方式使用?如果是这样,在Android文档中的位置是这样解释的吗?

memory ram storage android

22
推荐指数
1
解决办法
7万
查看次数

如何获得设备的总RAM大小?

我想获得一个设备的完整RAM大小.memoryInfo.getTotalPss()返回0.没有获取总RAM大小的函数ActivityManager.MemoryInfo.

这该怎么做?

size ram android

22
推荐指数
4
解决办法
4万
查看次数

需要将整个postgreSQL数据库加载到RAM中

如何将我的整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,我想为数据库专用2 GB.我已经阅读了有关共享缓冲区设置的信息,但它只是缓存了数据库中访问最多的片段.我需要一个解决方案,将整个数据库放入RAM中,任何读操作都会从RAM DB中进行,任何写操作都会首先写入RAM DB,然后写入硬盘驱动器上的DB.(有些像默认的fsync =在postgresql配置设置中使用共享缓冲区).

postgresql performance ram

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

memcpy的内部实现如何工作?

标准C函数'memcpy'如何工作?它必须将(大)RAM块复制到RAM中的另一个区域.因为我知道你不能在汇编中直接从RAM移动到RAM(使用mov指令)所以我猜它在复制时使用CPU寄存器作为中间存储器?

但它是如何复制的?通过块(如何通过块复制?),按单个字节(char)或它们具有的最大数据类型(复制在long long double中 - 在我的系统上为12个字节).

编辑:好的,显然你可以直接将数据从RAM移动到RAM,我不是装配专家,所有我学习的装配都来自这个文件(X86装配指南),在关于不能从中移动的mov指令的部分中提及RAM到RAM.显然这不是真的.

c memory ram copy memcpy

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

随机存取存储器如何工作?为什么它是恒定时间随机访问?

或者换句话说,为什么访问数组中的任意元素需要花费不变的时间(而不是O(n)或其他时间)?

我搜索了一下我的心脏寻找答案,并没有找到一个非常好的答案,所以我希望你们中的一个人可以与我分享你们的低级知识.

只是为了让你知道我希望得到的答案有多低,我会告诉你为什么我认为它需要不断的时间.

当我array[4] = 12在程序中说,我实际上只是将存储器地址的位表示存储到寄存器中.硬件中的该物理寄存器将根据馈送它的位表示打开相应的电信号.那些电子信号将以某种方式神奇地(希望有人可以解释魔法)在物理/主存储器中访问正确的存储器地址.

我知道这很粗糙,但它只是让你知道我正在寻找什么样的答案.

(编者注:从OP后来的评论中,他了解地址计算需要花费一些时间,并且只是想知道之后会发生什么.)

hardware arrays ram assembly random-access

20
推荐指数
3
解决办法
5431
查看次数

为什么Pandas连接(pandas.concat)所以内存效率不高?

我有大约30 GB的数据(在大约900个数据帧的列表中),我试图连接在一起.我正在使用的机器是一个中等功能的Linux Box,大约256 GB的内存.但是,当我尝试连接我的文件时,我很快用完了可用的ram.我已经尝试了各种解决方法来解决这个问题(在较小批量中与for循环连接等)但我仍然无法将这些连接起来.两个问题浮现在脑海中:

  1. 还有其他人处理过此问题并找到了有效的解决方法吗?因为我需要的"列合并"(由于缺乏一个更好的词)的功能,我不能使用直追加join='outer'的说法pd.concat().

  2. 为什么Pandas连接(我知道它只是调用numpy.concatenate)因使用内存而效率低下?

我还应该注意到,我不认为问题是列的爆炸,因为将100个数据帧连接在一起会产生大约3000列,而基础数据帧大约为1000.

编辑:

我正在使用的数据是我的900个数据帧中的每一个大约1000列宽和大约50,000行深度的财务数据.从左到右的数据类型是:

  1. 日期字符串格式,
  2. string
  3. np.float
  4. int

......等等重复.我串连对列名的与外连接,这意味着在任何列df2不在df1不会被丢弃,而是分流到一边.


例:

 #example code
 data=pd.concat(datalist4, join="outer", axis=0, ignore_index=True)
 #two example dataframes (about 90% of the column names should be in common
 #between the two dataframes, the unnamed columns, etc are not a significant
 #number of the columns)

print datalist4[0].head()
                800_1     800_2   800_3  800_4               900_1     900_2  0 2014-08-06 09:00:00  BEST_BID  1117.1    103 2014-08-06 09:00:00  BEST_BID   
1 2014-08-06 09:00:00 …
Run Code Online (Sandbox Code Playgroud)

python ram numpy pandas

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

为什么计算机科学中有8个和256个如此重要的数字?

我不太了解RAM和HDD架构,或者电子如何处理内存块,但这总是引起我的好奇心:为什么我们选择停在8位以获得计算机值中的最小元素?

我的问题可能看起来很愚蠢,因为答案很明显,但我不太确定......

是因为2 ^ 3允许它在寻址内存时非常适合吗?电子产品是否专门设计用于存储8位块?如果是,为什么不使用更广泛的词?这是因为它除了32,64和128,所以处理器的单词可以给出几个单词?这么小的空间有256个值是否方便?

你怎么看 ?

我的问题有点过于形而上学,但我想确保这只是一个历史原因,而不是技术或数学原因.

对于这个轶事,我也在考虑ASCII标准,其中大多数首字母对UTF-8这样的东西都没用,我也试着想一些更简单快速的字符编码......

memory math ram history processor

19
推荐指数
3
解决办法
7007
查看次数