我一直在努力确定,我所看到的是在我的Debian Wheezy Mono-Sgen 2.10.8.1-8embedded式应用程序中的内存泄漏。 该系统有512MB的RAM。 交换被禁用。 我一直在研究,试图理解Linux如何pipe理进程内存,从而得出结论,我所看到的实际上是在Mono-Sgen某处发生内存泄漏。 我非常确定,这不是我的应用程序,因为我已经在运行几周后的许多时间对其进行了描述,GC内存总是回落到应用程序的基线。 从我的应用程序的angular度来看没有任何物体泄漏。 这并不意味着Mono-Sgen内部没有泄漏,但是我没有确定这一点,也可能不是。
我试图限制我的Mono-Sgen堆,因为大堆的默认单声道是512MB,因为这是我所有的系统,所以我认为我需要限制它以阻止来自Linux的OOM。 我的Mono-Sgenconfiguration如下:
导出MONO_GC_ParaMS = major = marksweep-fixed,major-heap-size = 32m,nursery-size = 4m,疏散门槛= 75
根据我的理解,我使用32MB固定大小的标记和清除固定主堆,默认的4MB大小的苗圃大小,如果任何主要的堆分配桶都低于75,Mono-Sgen将在主堆上执行复制收集用于防止碎片化的百分比。 我撞了66%的违约。
由于某种原因,内存在内存上的重量超过了32位
在C ++中使用寄存器variables可以做多less坏事
做2个java进程共享JVM
htop显示比机器有更多的常驻内存使用情况
限制ubuntu上的jvm进程内存
自停电导致重置以来,我的设备目前已经运行了6天多一点。 当我的应用程序第一次启动时,我等待大约10分钟以确保它已完全初始化,然后快速启动/ proc / PID / status文件以获取内存使用情况的基线。 今天,我又拿了一家快餐店,看看我在哪里,一如既往,我的虚拟,居民和这个Mono-Sgen进程实例的数据再次增长。 它还没有违反初始化期间发生的高水位标记,但是上次我做了这个testing。 我所无法做到的以及我正在努力完成的任务是让它运行到耗尽系统所有物理内存的程度。 我需要知道这是否实际上是内存泄漏,或者在某些时候,Linux将回收我的进程分配的一些页面。
我注意到的一件事是,即使知道我没有交换,我的Mono-Sgen进程的常驻大小总是比数据计数less大约30MB。 从我所了解的数据计数是堆分配的数量,居民的大小是实际在物理内存,虚拟是什么已经分配,不一定使用。
我的假设是Linux只是Linux而不是浪费时间或内存,除非必须。 我假设由于系统负载很轻,Linux有0内存的压力来回收内存,只是为了防止Mono-Sgen继续分配和增长堆,而且我希望当有一些实际的内存压力时,Linux将会介入并回收没有真正使用的页面。
我已经读过,在以前分配的内存上调用free时,Linux不会缩小进程分配的内存大小。 我不明白为什么,除非Linux是Linux,否则只有在Linux的时候才会这样做。 但我的恐惧是需要等待多久,直到发生这种情况。
这是一个内存泄漏,或者当内存压力开始启动时,Linux会回收这个进程驻留和数据大小之间的页面差异吗? 我已经search了一切可以获得的关于这个主题的内容,而且我没有find我正在寻找的答案,也不想等待一个月,以确定我的应用程序是否会因为OOM杀手而反弹。 我会反正:)但是我想事先知道。
我用Mono-Sgen 2.10.8.1-8研究了潜在的内存泄漏,但是对于我正在做的事情(对本地Linux应用程序使用大量的process.start()调用),大部分会伤害到我的bug是不是在这个版本。 我尝试更新到Jessie的Mono-Sgen版本(3.2.8我认为),但是它在我的系统上崩溃了,所以我回到了稳定的Mono-Sgen 2.10.8.1-8版本。
附加的是大量的典型内存信息的快照,大部分的注意力集中在/ proc / PID / status返回的内容上。
任何信息将不胜感激一直以来,我的希望是我不明白Linux如何在轻载系统回收内存。
奇怪的内存问题?
现在是否值得实施一个slab分配器?
在Windows 7 64位上运行16位命令行应用程序
为什么讨论“swappiness”就像信息一样只能在一个地方一次?
Windows任务pipe理器显示内存使用不正确?
您可以设置以下环境变量来控制malloc的内部内存分配。 设置后,它会回答你的问题。 如果您想了解其他选项,请参阅:
http://man7.org/linux/man-pages/man3/mallopt.3.html
导出MALLOC_MMAP_THRESHOLD_ = 8192
导出MALLOC_ARENA_MAX = 4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。