去消耗c 内存管理理问题,怎么解决

动不动就 32GB 以上内存的服务器真需要关心内存碎片问题吗?
来源:zhihu.com
【我怎么感觉内存碎片问题是在以前内存小的时代留传到现代的, 现在os本身的内存管理难道对内存碎片问题一点办法也没有? 在网上查了下,linux好象有个什么伙伴系统用于对付内存碎片的。 当然服务端设计,只要是分布式架构,其中一台服务器重启也可以做到不影响服务,是可接受的,只是想问问实际上内存碎片问题真的严重吗?都32G以上内存,现代os也有应对措施。 针对下面的回答补充一下,当初采用分布式是为了避免单点故障,比如机房问题,硬件损坏之类的,不是为了内存碎片,另外服务器都自己买的,一次性的硬件投入,没觉得很贵,也部署了部分服务到linode,不过是为了保险,并不是主要的。 另外我是说内存碎片,不是内存泄漏,内存泄漏,那是bug,必然要解决的 也不是下面说的那么夸张,重启服务跟玩似的。 目前暂时没遇到什么大问题,但是无法保证以后有没有问题,如果问题确实严重,准备考虑整体换google的内存分配器tcmalloc】
1、如果编程使用的是无法直接操作内存的语言,比如 python/php/node.js 那么真的无需关心内存碎片的问题,关心也关心不来,心有余力不足就是说这个;2、能够直接操作内存的语言,要看应用场景:2.1、编写直接面向用户的应用,比如写个 game server,现在几乎不需要关心内存碎片问题(10 年前是必备技术哟);2.2、编写的是一个容器,比如一种编程语言的 Runtime,比如一个应用程序运行环境(如操作系统内核/nginx/apache),就需要关心,因为每个用户都是魔鬼,他们会用你完全想像不到的方式折磨你写的程序,必须怀最大的恶意去揣测他们,并使用最悲观的方案以使你的程序在极端恶劣的环境中能够继续运行;此外,如果你编写的是一种特殊应用程序,业务非常单一、非常独特,比如 memcached,那么就值得自己编写内存分配代码,这样除了可以避开内存碎片问题,还可以获得极致性能。综上所述,回到题主的问题:考虑到目前已有的内存分配代码已经非常强大(比如 tcmallac),而机器内存又十分巨大,而且只有千分之一不到的人在写 2.2 的代码,所以可以说现在不需要关心内存碎片问题了。但是,内存管理就像多线程编程一样,学懂它是极好的,哪怕日后使用 php,如果心中有相关的理论知识指引,写的 php 也会漂亮很多。
当然需要。再大的内存,只要软件运行的时间足够久,都有可能产生大量的内存碎片,从而对性能和可用内存造成负面影响。造成内存碎片的原因大致可以归为两类:内存分配机制。拥有先进GC机制的语言(如Java、C#),在对抗内存碎片方面表现较好。它们的GC一般会有个Compact步骤,会移动对象在内存中的位置,将多个对象整齐无间隙地排列好,从而消除了不少内存碎片。如果是使用传统malloc/free或者自己写内存分配的话,产生内存碎片的概率不小。这方面比较典型的例子就是Firefox,它以前代码里有不少自己写的allocator,内存碎片问题是非常严重的,曾经看到过一张图(现在找不到了)描述这个问题。后来Mozilla开始逐步采用jemalloc来帮助解决这个问题。软件的实现细节。这方面具体原因比较多样,很难归类,举2个例子:Firefox7的时候修改了一个内存分配行为,就一下子降低了不少内存碎片:Firefox15的时候对addon的机制做了改动,一下子解决了大量长期困扰的addon内存问题:取决于软件的具体类型,对抗内存碎片可能是个长期的战争,有兴趣的可以翻翻Mozilla的MemShrink项目: 看看别人是怎么用了2年功夫把Firefox从一个超级耗内存的浏览器变成一个最节约内存的浏览器。
The Memory Fragmentation Problem: Solved?1998 年的论文:我的观点是:一般的 64-bit C/C++ Linux 服务程序现在已经无需关心所谓的“内存碎片问题”了,也不必动不动就要自己去实现内存池,只需要用一个足够好的现代 malloc 实现即可,例如 tcmalloc。这里“一般的服务程序”指的是非内存数据库这种以内存为主要资源的服务程序。另外,我说的服务程序是用户态的进程,不是内核里的东西。再补充两篇有关定制内存分配器文献:Memory Allocation: Either Love it or Hate It (Or Think It’s Just OK)Reconsidering Custom Memory Allocation
简单的说:虚拟地址的内存基本上不用考虑,使用实地址(物理地址)的内存需要考虑碎片。如果你的代码是跑在应用层用户态的,那么内存碎片基本上(如果用太烂/太特殊的开发工具除外)是不用考虑的,用户态的虚拟地址是基本上不用考虑碎片问题的。如果你的代码是跑在内核态,直接从内核里按page来申请,并且申请的是虚拟地址的话,那么通常来说也不会遇到内存碎片的问题。如果你的代码是跑在内核态,并且有用到DMA/直接地址访问等操作,那么内存碎片是必须考虑的,这些代码一般都涉及一些驱动的开发,并不是所有设备都能工作在高于4G的地址上,那么4G以下的地址如果被占满,或者找不到足够大的物理连续地址做DMA,那么内存碎片问题就会出现。尽管服务器内存大于4G的太常见了,但是只能使用4G以下地址做DMA的硬件还是很多的,比如USB的某些控制器(OHCI/UHCI),某些网卡(fei)等,如果驱动写的不好,或者驱动里有自己的代码,或者用了dma_alloc之类的,就必须考虑碎片。当然,话说回来,稀奇古怪的硬件在PC平台上越来越少了。
只要一天不能把整个数据库都塞进内存,那一天就还不能说内存够用
SGI STL 中的二级空间配置器 已经能够很大程度上缓解内存碎片的问题了,没错 SGI STL 自己就维护了一个 内存块小于 128k 的内存池。
内存碎片问题实际上跟时间关系不大,跟空间关系也不大。碎片是内存分配释放引起的,不好的设计,要多少次内存分配就能把32g内存全都布满碎片呢?100万次够了没?如果一次请求分配10次内存,就是处理10万次请求,那么处理10万次请求要多少时间呢,有的系统可能只需要几分钟,有的可能要几天。空间也是如此,如果32g内存只要10分钟就都是碎片,那么64g也就20分钟,128g也就40分钟。当然,如果空间大到一个很大很大的值,比如2的52次方,那又另外一回事情了。比如某个内存分配算法每次都分配4k以上,按照最小物理页分配。那么可以利用虚拟内存,把不连续的物理内存连续起来,那么要占满2的52次方的地址空间,还是得一段时间的。2的52次方1M个32G,按照上面的10分钟计算的话大概要100万分钟。但是另外一个问题,2的52次方的地址空间全部都配置分页的话,分页开销就需要至少需要8192G内存,需要这么多内存来存放分页目录结构。对付碎片最好的算法应该是slab及其变种。最大slab大小如果过大,内存利用率会很低,变种slub就只分配4K以下的,超过的就用其他内存分配。原则上4K以下的内存分配不会造成内存碎片,如果一个系统超过4k的动态分配还是很多,那么碎片还是会有问题。可以说没有一个内存分配算法可以杜绝内存碎片。要解决内存碎片最好的方法还是把内存分配透明,让程序员知道内存是怎么分配的,才能规避内存碎片。黑盒内存分配,想靠算法杜绝碎片是不现实的,只能说是缓解。
泻药。buddy内存分配是OS做的事情,和应用层面无关。看起来LZ应该更多的是一个OS的使用者而不是开发者。即便32GB的服务器,长期运行以后多少都会有内存碎片的问题,主要体现在应用程序申请大块连续内存的时候有可能失败。但是实际作为OS使用者其实并不需要太关心这个问题。在内存受限和内存相对充足的环境下申请和使用内存的策略是有区别的,就像回答里有人提到在的单片机或者上DSP片子的C程序写法必然不能和普通x86应用程序一样。换句话说,如果你的应用程序必须经常申请某个大小的整块内存,而又因为这个总是造成应用程序任务运行失败的时候,那这个应用程序自己就应该考虑自己的策略了,比如:1. 申请大小为N的内存区域失败的时候,接着申请N/2大小的区域,如此循环直到能正常分配内存,并相应的对程序进行调整使之可以在较小内存使用下分割大任务。做到对内存的自适应。2. 如果该应用程序必须要一个size不能改变的大块内存,那就在尽早的时候(比如在系统启动的时候)就占领足够多的内存并且把持在自己手里,其实也就是自己实现内存池了。=====但是不论采取什么策略规避问题,总是要有trade-off的,比如:策略1虽然可以解决问题,但是会消耗更多的时间,策略2虽然可以保证内存够用,但是需要自己管理内存池。如果LZ认为重启下集群中的某个服务器不对系统产生影响,那也是个很现实的解决方案,每个机子隔上十天半月错开时间自动重启,写到crontab里,问题解决。
1.产生原因:内存碎片、文件系统碎片等等,其产生原因是,对固定大小的连续性资源进行无规划的分配,就一定会产品碎片。换句话来说,无论你用何种算法或策略,只要无规划就一定会产生碎片。由于计算机上,不能保证100%的程序都是有规划的分配,因此碎片问题一定会一直存在,无法避免。2.优化方法:既然碎片问题的根源在于无规划,那么有规划就能减免碎片。目前业界常用的两个优化方法是:----1.分页。----2.池。但要注意,这些只是优化方法。优化方法能减少以及尽力规避碎片,但无法根治。3.因此这就产生了一个问题,有些运行了很多年没有重启的机器,他们就没有碎片吗?----1.有碎片。只不过这些机器由于内存容量充沛,充沛到几年内碎片问题也不会影响到机器稳定性。----2.根据业务高度定制的内存管理原则。比如:----.----1.OS级别,给APP用多级分页策略来分配大内存块,当每个块的碎片过多时,就会开辟新的块给APP用,旧块则回收。----.----2.对于分布式系统来说,部分节点重启不影响整体系统的运行。因此,整个系统看上去仿佛是多年不停机,实际上承载它们的节点服务器早已重启过很多次了。
到目前为止,我看到的所有回答,全错。对应用程序来说,内存碎片与操作系统无关,因为操作系统提供的内存分配函数(如HeapAlloc)只能用来分配大块内存。小块内存只能靠用户级的内存分配器(如malloc)。而内存碎片的罪魁祸首就是小块内存的频繁分配。对付内存碎片有三种办法:1. 不要动态分配内存,尽量使用栈。2. 根据使用场景定制内存分配策略。比如如果你发现你常常分配同一种大小的数据结构,那么就一次分配一个数组从里面挨个取,用完了扔回旁视列表里以备重用。再如你发现内存分配具有周期性,那么你可以周期性的分配大块内存,用完了释放整块内存。3. 不手动管理内存,改用具有分代内存管理、增量垃圾收集和内存整理功能的垃圾收集器。比如你要是用了Java,那么你就再也不用操心内存碎片了(代价是你的程序占用的内存会比用C语言时翻几倍)。我觉得以上是内存管理的常识吧。我虽然六年没用过C/C++了,这点常识还是知道的。
首先,Linux kernel 的 buddy memory allocation 是内核使用的物理内存维护算法之一,与应用程序无关。Glibc 的 dlmalloc [1] 算法才是应用程序相关的,且就是 dlmalloc 的 fragmentation 被讨论得很多 [2] 。对于特定应用,如果对内存的使用刚好导致 dlmalloc 的碎片过多,你不可能置之不理。碎片的问题,一方面是浪费内存,无法分配,另一方面也是让分配效率降低:内存越大,可能的碎片越多,每次分配查找时间也越大。没有一个合理的内存分配策略始终是不可行的。要说现在服务器都有 32G 内存……呵呵呵。参考 Amazon EC2 的报价 [3][4],1.7G 内存的服务器 6 美分一小时,34G 内存的 m2.2xlarge 82 美分一小时。至于说集群……一台机器里能解决的问题,分配到集群上执行需要多考虑至少 50% 的复杂度问题:同步、通信、数据保持……你要是基本的内存处理都懒得解决,集群这种高级货还是放弃了吧。[1] [2] [3] [4]
刚好近两年处理过几起内存碎片的问题,尝试回答下。注意,不是内存泄露。先说结论:只要程序持续有内存分配行为,就可能导致内存碎片;内存碎片问题,随着内存分配的释放,只会越来越严重,很难缓解,表现上就是内存rss使用不断增大;好的内存管理算法,如jemalloc,tcmalloc等,可以很大程度上减少内存碎片问题,但不能回避;关于题主说的内存32g大的情况,只是相对应用程序本身使用内存(小)而言,这和内存碎片没有必然关系,答主之前遇到的内存碎片,都是在64g的服务器上。另外,顺便吐槽下,linux自带的glibc太老了:-(手打,详细内容,后面再补充。
内存分配的话其实要看你用的程序api的级别 如果是使用malloc分配代码的话,malloc其实是不同平台不同编译器自己实现的,他有自己
的算法,大概思想应该就是如果事先分配一些大内存,如果是需求小内存的话,从大内存中划拨一块给他,如果用完了,就调用系统api(windows下应该
是HeapAlloc,linux下应该是brk)来增加。理论上,这些内存应该不用担心会碎片……这是操作系统内核的算法保证的,而如果我们频繁的释放
使用malloc、free造成的内存碎片是已经分配给我们的那些内存这就是为什么替换tmalloc可以比较好的解决碎片问题,他实际上是复写了c库的malloc下面我提供一个思路好了nginx的内存管理: nginx的为对象提供内存使用的是ngx_malloc(好像是这个名字)函数,他其实就是先用c库的malloc分配一大块内存,然后自己手动管理整个内存,全部应该只用到几次加减比较运算,还算比较简单的解决了内存碎片问题。最后说下 其实我是写python的 内存碎片是什么啊?哈哈哈
上面都是牛人,我只能说说运维中的个人体会,运营商级别的系统,无论外围还是核心其实都存在内存管理不善的问题,所以集群其实是很有用的,而且高可用集群实现起来比细究内存容易太多,所以就进入一个循环,对内存机制的探究越来越少,更多使用冗余结构代替。
个人感觉,这个问题还是要看应用场景。那种存在大量并发且生命周期较短的进程(一般都是在数据采集机上),很容易僵死或延迟退出导致内存无法释放(大量无用缓存),降低内存真实利用率的机器,应该还是要具备良好的内存管理机制才好。
32G内存很大吗,32T内存也会有碎片,有就得清理,就得关注。
有底层编程经验的人应该知道,对于64bit寻址,32gb内存远远小于其最大寻址范围,何况是计算量和存储量很大的服务器,现在大数据时代服务器硬盘都是tb级,早就有了海量数据在内存中的排序问题这类基本算法题,在内存可利用空间很低,碎片会极大影响系统效率
是啊,随着内存越来越大处理器越来越快服务器越来越便宜,开发的软件规模就越来越大了,相应的可能出现的bug就越来越复杂。就算内存是无限大,cpu如果不能做到无限快还是没用啊,内存越大处理器负担就越大呗。
腹黑小太阳:
问题不是在于你的内存有多大,而是在于你的GPRs有多宽。64bit系统下,单app的虚拟地址为2^64字节约合17m TB,你的服务器一生能写入那么多数据吗。。。32bit包括32bit PAE下,单app的虚拟地址linux下为1+3GB、windows下为2+2GB。单次申请超过100M的话最好还是悠着点吧,一不注意就用完的。。。
48核的ARM跑个benchmark,64G的内存不够用只能开20个线程
宏观角度,看量级,比尔盖茨说过,内存4M远远够用了, 如果你是编那个时代或者内存封顶32位4G的年代, 你用32G的跑,估计很久才能抛出问题.如果你的程序已经是32G的量级,比如说开始跑已经占了28G, 那么你就要小心了.
Aule Mahal:
是否考虑内存碎片并不是内存总量决定的,而是对内存的使用方式。首先要理解碎片产生的原因,然后尽量以页面整数倍为单位申请,无论是现代分配器,或者自行编写内存池等等方法很多。进一步说,楼主关心的乃是程序性能,那么profiling和压力测试是更需要的。每个公司每个程序都有自己特定的场景和历史遗留,要因地制宜,不宜效仿。
我认为通用内存管理机制,是不能避免内存碎片的。你对自己的业务了解越多,制定专门的内存分配策略,才能避免内存碎片。比如在初始化状态就把用到的内存都申请了,在函数中绝对不分配内存,使用子进程来完成实际工作,完成后关闭进程(相当于完成就重启),或者使用线程,在线程开始时就分配线程使用的资源,关闭时完全清理。总之,优化的越细,就越没有碎片,可一旦需求更改,涉及到更多的问题。所以,需要权衡,如果这个server一下子运行好多年不用改,那完全可以写的没有任何碎片。如果需求没几个月就改了,那你还考虑那么多干什么,可能还没到碎片多到需要重启的时候,就修改代码了。以上仅适用于C语言,JAVA完全不用考虑,它自动回收垃圾重分配,除非你的代码垃圾到在它两次回收之间就产生足够多的碎片(我见过用while 循环一个数据表,用string + string 的方式拼出一个网页)。
要看什么主机了,Linux下没有碎片整理那回事。
初学者的一点浅见,只说自己知道的东西(好久之前看的了,记得不是很清楚)楼上们貌似只提到64位线性地址空间内不会产生虚拟地址空间不够,但是没有考虑到物理地址空间的情况内存碎片是什么东西?内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。操作系统使用分页机制,所以外部碎片已经不是大问题了主要的是内部碎片页面层次:处于一个我也不记得是什么的原因,当申请大量页面时,如果这些页面物理上也是连续的话,效率会有差别(linux内核中的kmalloc函数和vmalloc函数,就是这样的例子)高速缓存层次:高速缓存行的大小是固定的,对齐越严格,效率越高,内存浪费越严重,当对象大小与缓存越贴合时,碎片就会越少最后感觉你貌似问的不是这问题
先说个引申的:系统的设计在很大程度上取决于统计,也就是说可以满足80%甚至以上的情况,但是能满足100%的设计或者说一个全面的解决方案目前是不存在的。这也是为什么算法里面有最差时间这个概念,而针对某个问题确定一个算法适不适用的依据之一是,在这些操作中能导致算法最差时间的统计机率。试想你有一个log的平均时间和常数时间的最好算法,可你的操作模型80%的情况是发生在最差情况下,那么这个算法本身是不适合你的问题的。那么对于内存设计,同样也是针对大量内存存取操作的统计规律而设计(可以在成千上万的开源项目中针对malloc和free的频率,大小,申请释放间隔等进行统计),也就是说现在的内存管理策略,可以满足绝大多数程序的一般应用而不会造成最差情况的发生。而伙伴算法只是满足这些一般应用的一种算法,这个算法无法消除碎片,甚至碎片本身就是无法消除的,这是有人证明过。那么针对你的服务器哪怕内存再大,如果是你自己写的无规律的申请、释放不同大小的内存,或者你的服务器所面临的内存存取不适合用现有的内存管理算法来管理,或者你构造一个特殊的存取序列来寻找伙伴系统所不那么优秀的剩余20%的情况,那么用不了多久地址空间里面便碎片满地。这有点像是问,现在内存很大了,动不动就32G以上,还可以分布式,然后重启,那么内存泄露是否真的需要关心吗?另外计算机里面很多设计都是基于统计来的,也就是常说的空间和时间局部性原则,比如cache、页面、缓冲区等的淘汰机制,分支预测等等。你都可以找到一种不满足设计时统计规律假定的操作来使得你的程序效率最小。这样的情况也发生在内存碎片的管理中。
无论如何不要做没必要的内存分配与释放!如果还会出现内存碎片,那就要看它到底对你的应用产生了多大的影响?。PS:匿名用户最后一段说得没错,但我们大多数还是(利用)需要的是分布式集群(趋势)。不过即便如此,能更大限度发挥单进程效率那也是应该的。
缓存层次,存储器<临时存储器<高速缓存 ,我觉得需要考虑这个问题的主要原因在于缓存命中率的问题,如果命中率高,对于性能的提升是显著的,在服务器领域,业务成熟了的公司,性能=钱。有兴趣可以去看看LMAX架构,他们单服务器做到了600w TPS的响应,对于内存这一块也提了一些很有建设性的看法。另外,作为一个小菜,为了提高逼格,补句:这是Martin flower的推荐,肯定有其价值
这个问题吧,我觉得1. 内存池无法解决碎片问题,自己实现内存池来管理内存的程序更多的是为了提高内存使用效率,提升程序性能(减少系统调用,缓存,局部性原理)。2. 64位的系统的线性地址空间里产生过多碎片导致无法分配大内存,目前为止可以说是不存在这种问题的。3. 分布式系统下单机性能依旧很重要,省点钱省点电费是值得的。
啥是内存碎片呢?
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.大家都在搜:
扫描二维码安装房天下APP
手机浏览器访问房天下
> > 问题详情
明明应用程序已经关闭了,任务管理器里也没有什么异样,但还是有很多内存被占用,这是怎么回事!!,
打开电脑,一切正常,但玩完游戏后,游戏也关闭了,一看任务管理器,内存被占用很多,里面也没有什么,奇怪的程序,和刚开机时一样,还是那几个开机程序,这是怎么回事??帮帮忙吧!!!
浏览次数:0
许多用户在刚启动系统时,觉得Windows的运行速度蛮快速的,可是过了一阵以后(例如,玩了一会儿大型的3D电子游戏退出后)就觉得整个系统的运行速度明显下降了。这是怎么回事呢?原来,由于物理内存总有上限,所以Windows系统采用了虚拟内存分页映射的机制管理内存,也就是分页系统通过分配部分硬盘作为附加内存。当被称为页的小块内存不再使用时,可以将它们存放到磁盘上去,以便腾出更多的物理内存空间。当Win...
许多用户在刚启动系统时,觉得Windows的运行速度蛮快速的,可是过了一阵以后(例如,玩了一会儿大型的3D电子游戏退出后)就觉得整个系统的运行速度明显下降了。这是怎么回事呢?原来,由于物理内存总有上限,所以Windows系统采用了虚拟内存分页映射的机制管理内存,也就是分页系统通过分配部分硬盘作为附加内存。当被称为页的小块内存不再使用时,可以将它们存放到磁盘上去,以便腾出更多的物理内存空间。当Windows9x启动时,操作系统就要占掉差不多20多M物理内存,一旦运行别的程序,Windows就会不断在物理内存和虚拟内存之间交换内存页。NT可以使用多达64KB的页,但是Intel的CPU强制使用4KB的页。系统运行时间一长,内存中的页面碎片将越来越多,这就是系统运行速度下降的原因。针对Windows操作系统内存管理的缺陷,Windows优化大师提供了内存整理功能。它适用于Windows9x/2000/XP/2003/Vista操作系统,能够在不影响系统速度的情况下有效的释放内存。在使用过程中,建议用户先进入Wopti 内存整理的设置界面,单击“推荐”后,选择“保存”返回软件主界面,这样将使Wopti 内存整理工作在最有效的状态。同时建议使用者在运行大型游戏软件时不要启动内存整理,大一点的游戏可能要吃掉大量的物理内存(通常都是100%),因此这时候整理和释放内存可能会降低游戏的速度。
房天下知识为您分享了一条干货
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
没有房天下通行证,
ask:2,asku:0,askr:61,askz:24,askd:27,RedisW:48askR:106,askD:48 mz:hit,askU:0,askT:0askA:156
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
违法信息举报邮箱:

我要回帖

更多关于 linux内存管理 的文章

 

随机推荐