标签: memory-pressure

如何在内存压力下将可执行代码保存在内存中?在Linux中

这里的目标是在内存压力期间将每个正在运行的进程的可执行代码保存在内存中.
在Linux中,我能够立即(1秒)引起高内存压力,并在Qubes OS R4.0 Fedora 28 AppVM内通过stress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 + 4000;}' < /proc/meminfo)k --vm-keep -m 4 --timeout 10s(来自此处的代码)触发OOM杀手, 最大内存为24000MB.编辑4:也许是相关的,但我忘了提及,事实是我没有启用交换(即CONFIG_SWAP未设置)

dmesg报道:

[  867.746593] Mem-Info:
[  867.746607] active_anon:1390927 inactive_anon:4670 isolated_anon:0
                active_file:94 inactive_file:72 isolated_file:0
                unevictable:13868 dirty:0 writeback:0 unstable:0
                slab_reclaimable:5906 slab_unreclaimable:12919
                mapped:1335 shmem:4805 pagetables:5126 bounce:0
                free:40680 free_pcp:978 free_cma:0
Run Code Online (Sandbox Code Playgroud)

有趣的部分是active_file:94 inactive_file:72它们以千字节为单位并且非常低.

这里的问题是,在内存压力期间,正在从磁盘重新读取可执行代码,导致磁盘抖动,从而导致操作系统冻结.(但在上述情况下,它只发生不到1秒)

我在内核中看到一个有趣的代码:mm/vmscan.c

        if (page_referenced(page, 0, sc->target_mem_cgroup,
                            &vm_flags)) {
                nr_rotated += hpage_nr_pages(page);
                /*
                 * Identify referenced, file-backed active …
Run Code Online (Sandbox Code Playgroud)

linux memory memory-management linux-kernel memory-pressure

10
推荐指数
1
解决办法
1221
查看次数

在uiwebview中渲染svg会导致内存压力(和应用程序崩溃)

我正在制作一个"交互式地图",类似于这个例子.我需要能够放大地图并仍然得到一个干净的插图,因此地图的绘制是在svg中完成的(它实际上是在Illustrator中创建的,然后保存为svg文件).

在应用程序中,我创建一个UIWebView并加载包含svg的html.HTML文件是应用程序中的捆绑包资源,因此没有网络延迟.有点击形状,当你点击它们时,它会带你到另一个地图(另一个带有svg绘图的html页面).

其中一个svg相当大(~5.8MB).加载时,我收到"内存压力"警告,然后崩溃.仪器显示虚拟内存为298.71MB,真实内存为149.10MB.

我已经简化了绘图(我拿出了一些细节),我还使用了@Peter Collingridge svg优化器.

如何优化内存使用,以免崩溃?

svg instruments uiwebview memory-pressure ios

6
推荐指数
1
解决办法
1180
查看次数

如何回应GCD的记忆压力通知?

我正在使用GCD来获取内存压力通知.

GCD文档描述了一些常量:

DISPATCH_MEMORYPRESSURE_WARN

系统内存压力状况处于警告阶段.应用程序应该释放他们现在不需要的内存.

DISPATCH_MEMORYPRESSURE_CRITICAL

系统内存压力条件处于关键阶段.应用程序应尽可能多地释放内存.

似乎逻辑上我应该释放未使用的内存.但是,在其他地方(手册页源代码),我发现此注释与这些常量有关:

升高的内存压力是系统范围的条件,注册此源的应用程序应通过改变其未来的内存使用行为来做出反应,例如通过减少新启动的操作的高速缓存大小,直到内存压力恢复正常.

但是,当系统系统内存压力进入升高状态时,应用程序不应遍历并丢弃过去操作的现有高速缓存,因为这可能会触发VM操作,从而进一步加剧系统内存压力.

这让我很困惑.我应该释放内存,还是应该停止分配新内存?

memory memory-management grand-central-dispatch memory-pressure ios

5
推荐指数
1
解决办法
3166
查看次数

由于内存压力终止,使用少于15MB

我正面临一个奇怪的问题,我正在努力的应用程序由于内存压力不断被杀,但它并没有真正使用,因为你可以在屏幕截图中看到.
所以我开始寻找"其他"问题,如内存泄漏,隐式转换,但我真的不知道如何调试这类事情,所以...有谁知道如何摆脱这个问题?:)

在此输入图像描述

iphone memory-management memory-pressure ios

5
推荐指数
1
解决办法
1979
查看次数

由于内存压力,可靠地强制后台应用程序终止

我试图了解导致iOS系统重新启动因内存压力而终止的应用程序的条件.尽管如此,创造足够的记忆压力仍然很难

目前我的方法是通过Xcode启动我的应用程序,后台它,并启动一个吃内存的帮助应用程序.它在NSTimer循环中分配内存位,直到iOS系统终止它为止.当我很幸运时,Xcode告诉我,我的主应用程序是"由于内存压力而终止".

我正在寻找一种更可靠的方法来实现这一目标.是否有更好的内存分配技术或私有API用于此目的?

memory-pressure ios ios7

4
推荐指数
1
解决办法
1038
查看次数

当我使用Photos.app时,我的iOS应用因内存压力而终止

我在iOS 7.0.1和iPod Touch第5代设备上运行我的应用程序.当我按照以下步骤操作时,我的应用程序在Xcode 5上退出以下错误而控制台没有任何错误

App quit Unexpectedly Terminated due to Memory Pressure
Run Code Online (Sandbox Code Playgroud)

步骤:1)使用Xcode运行我的应用程序5.登录然后转到主页

2)单击主页按钮,以便我的应用程序进入后台(我可以看到我的应用程序在后台)

3)从iOS启动内置照片应用程序.单击1或2张图片

4)拍摄1-2张照片后,应用程序因内存压力而意外终止

我在我的应用程序中没有做任何事情.当我检查CPU使用率时,其使用的0%和Memeory = 15.2 MB此外,除了我的应用程序之外,没有其他应用程序在后台运行.

任何人都可以帮忙吗?谢谢

我不明白为什么会这样.如果我不使用Photos.app,那么应用程序可以顺利运行.

objective-c memory-pressure ios7 xcode5

2
推荐指数
1
解决办法
4128
查看次数

使用 C# 语言的哪些机制将对象的实例传递给 `GC.AddMemoryPressure` 方法?

使用 C# 语言的哪些机制将对象的实例传递给GC.AddMemoryPressure方法?

通过 C# book在CLR 中遇到了以下代码示例:

private sealed class BigNativeResource {
    private readonly Int32 m_size;
    public BigNativeResource(Int32 size) {
        m_size = size;
        // Make the GC think the object is physically bigger
        if (m_size > 0) GC.AddMemoryPressure(m_size);
        Console.WriteLine("BigNativeResource create.");
    }
    ~BigNativeResource() {
        // Make the GC think the object released more memory
        if (m_size > 0) GC.RemoveMemoryPressure(m_size);
        Console.WriteLine("BigNativeResource destroy.");
    }
 }
Run Code Online (Sandbox Code Playgroud)

我无法理解我们如何将一个对象的实例与其增加的压力相关联。我没有看到对象引用被传递给GC.AddMemoryPressure. 我们是否将增加的内存压力 (amp) 与一个对象联系起来?

此外,我认为调用GC.RemoveMemoryPressure(m_size);. 从字面上看它应该没有用。让我解释一下自己。有两种可能:对象实例之间存在关联或不存在关联。

在前一种情况下,GC 现在应该m_size …

c# garbage-collection memory-management memory-pressure

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