我想知道,运行游戏时RAM会很高,到90%,请问这种状况下是不是需要加内存条呢?我现在的内存是2G。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想知道,运行游戏时RAM会很高,到90%,请问这种状况下是不是需要加内存条呢?我现在的内存是2G。相关的知识,希望对你有一定的参考价值。

哥们,ram是运行内存,rom是储存空间(手机自带的),另外内存卡相当于电脑硬盘,这个ram是没关系的,你加100g内存,ram也上不去,手机设计的时候都定死了容量了,目前最高规格ram的手机,也只不过是1g而已,包括双核或者传说中的的四核,ram也是1g,这个你可以去查询的,另外你用有是安卓系统吗?此系统基于linux开发的,特别便是智能分配ram,当ram不足的时候会自动关闭不常用或者不重要的后台,另外有些后台你看着它是在运行,其它它只是在潜伏,不真正占有用ram,只是便于下次启动它的时候能更迅速追问

拜托,我指的是电脑的RAM,手机貌似没有到了2G那么大的内存的吧。

追答

晕,不好意思,我没看分类,只看了题目,以为是手机咧。不打扰哈,你继续。。。。

参考技术A 不需要,一般游戏时RAM占用都很高,如果提示内存不足,请增加虚拟内存。 参考技术B 不好意思 现在才看到你的提问 如果你玩的游戏 是特别大型的话 内存耗到90% 不足为奇 只要你玩游戏的时候 不卡 就没什么问题了 基本可以忽略的了本回答被提问者采纳

如何在 ARM 架构上从 RAM 运行代码

【中文标题】如何在 ARM 架构上从 RAM 运行代码【英文标题】:How to run code from RAM on ARM architecture 【发布时间】:2013-02-14 17:49:59 【问题描述】:

我正在编写一个 ARM Cortex-R4,我有一些二进制文件,我想从 TCRAM 执行它们,只是为了看看性能的提升是否足够好。

我知道我必须编写一个函数来将二进制文件复制到 RAM(这可以通过链接描述文件完成,并且知道二进制文件的大小)。但是他们会怎么跑呢?

想象一下:第一个二进制文件有 func1()、func2()、func3() 和 func4()。我将整个模块复制到 TCRAM,我将如何在那里调用函数?我必须使用指向该特定函数的函数指针吗?如果 func4() 调用 func2() 和 func3() 会怎样?如果我没记错的话,他们会指向闪存中的一段代码。这是否意味着我必须重新编写那些函数?完全使用函数指针?有人告诉我,仅链接描述文件就足以完成所有这些工作,我无需担心任何事情,但我仍然不明白它是如何工作的。

【问题讨论】:

【参考方案1】:

在 GCC 上:只需将函数放在 .data 部分:

__attribute__( ( section(".data") ) )

它将被启动代码与您初始化的其余变量一起复制(无需弄乱链接器脚本)。如果函数在放入 RAM 后与其余代码“相距甚远”,您可能还需要一个“long_call”选项。

__attribute__( ( long_call, section(".data") ) )

例子:

__attribute__( ( long_call, section(".data") ) ) void ram_foobar (void)  ... 

您可能会收到可以安全忽略的编译器警告:

Warning: ignoring changed section attributes for .data

【讨论】:

这很有用,但我认为它不会按照 OP 的要求将该功能放入 TCRAM 中。这将以一种相当简单的方式将函数放入 ram 中,但效率不高,并且根据例程大小,它实际上可能比从闪存执行要慢(由于调用开销)。因此,这仅取决于 为什么 您需要将数据放入 RAM(不是 TCRAM 根据 OP)才有用;例如 SMC。 添加noinline 属性也可能很有用,以确保代码不会内联到另一个从闪存运行的函数中。【参考方案2】:

你有两个选择。

    按照你的建议复制它们,用pc relative编译。 使用具有不同加载/运行地址的链接器文件。

仅当例程不使用任何绝对地址时,一个简单的副本才有效。如果他们确实使用 绝对地址 可能没问题,因为我猜你会在标准 RAM 中留下一份副本。但是,这可能无法充分利用TCM

使用链接器脚本,您可以指定不同的LOADRUN 位置。

sections 
 .text  *(.text);  >FLASH
 .tcm 
       *(.tcm);
   >TCM_MEM AT>FLASH
  .data  *(.data);  > RAM
  .bss : NOLOAD  *(.bss);  > RAM

特别注意AT>FLASH

另请参阅:gnu linker map file... 以及 *** 上的更多内容。 Gnu Ld manual 包含有关 LMA 部分的信息(LOAD 地址)。您的LMA 将是flash,但VMARUN 地址)将是TCM。上面的手动链接还显示了如何复制。 RAMFLASHTCM_MEM 使用 ld MEMORY 信息定义,具体取决于您的板的地址。所有这些都将记录在MAP 文件中。请务必生成一个MAP 文件并检查地址以仔细检查您的ld 脚本。

第二种情况也需要一份副本(在启动时或至少在第一次使用TCM 函数之前)。但是,编译器可以使用绝对地址,它们将位于TCM 内存中。此外,主DRAM 中的任何函数都可以直接调用TCM 函数。对于第一种情况,您必须使用函数指针来调用TCM 代码。如果您希望将全局变量放置在此内存中,可以使用属性将它们放置在不同的部分中,并使用 gnu ld 适当放置它们。我认为有ITCMDTCM?所以也许这不适合你,或者你需要两个部分。

链接描述文件更通用,如果您将复杂的功能放在TCM 中,效果最好。仅使用-fpic 等并进行复制可能会使事情快速运转,尤其是在您只有一个pure 函数的情况下。

【讨论】:

【参考方案3】:

现在(当时也是?)您可以只使用宏 __RAM_FUNC__RAMFUNC_EXT(bank, name)__RAMFUNC(bank)

【讨论】:

非标准 C。在 IAR 中支持,而不是 GCC。

以上是关于我想知道,运行游戏时RAM会很高,到90%,请问这种状况下是不是需要加内存条呢?我现在的内存是2G。的主要内容,如果未能解决你的问题,请参考以下文章

STM32 KEIL C如何在RAM中调试FREERTOS?

请问下西安汇众游戏动漫学院怎么样?帮我弟弟咨询下~~

根据 CPU 和 RAM 使用情况调整线程池的 Java Executor

我在虚拟机中装Linux Mint操作系统,但占内存太大,内存使用都能达到90%,请问那个版本的Linux在虚拟机中

使用Hibernate时内存使用率很高

我如何复制正在运行的应用程序的 RAM、保存它并稍后将其重新加载到 RAM 中?