如果实现了一种不用暂停世界的GC算法,会对现在编程语言产生什么影响?:Java和golang的最新的gc处理耗时已经极低了,又想有gc,又不想暂停世界,可能比较困难。
Java和golang的最新的gc处理耗时已经极低了,又想有gc,又不想暂停世界,可能比较困难。
如果想智能回收内存,可以选择rust,思路是所有权机制。
所谓所有权机制,就是任何内存都是有主的,由主人自己在销毁的时候来释放,别人想使用不属于自己的内存,需要通过借用来实现,借出去的东西必须还回来。
然后在编译阶段保证所有权机制的安全,不允许出现有借无还的情况。
这是一种新的语言,新的编程思想,你可以研究一下。
从某种意义上来说,即使不gc,世界也是无时无刻都在暂停,因为性能不是无限的,执行每一个操作都需要时间,等待操作完成和暂停世界没有本质区别,如果可以让gc的时间足够短,那gc的时间就可以忽略了
现在ibm已经有gc时间非常非常非常短的算法了,主要缺点是费内存
理论来说不停顿就会影响程序本身的吞吐量,因为如果gc线程全阶段和应用程序线程并发的话就会抢占CPU资源。
其实个人认为是可以做到的,但有没有必要就视情况而定了。譬如zgc本身停顿时间一般就在十到几十毫秒左右,如果gc roots不是特别多的话,其实这时间已经算非常短了,也基本能满足比较苛刻的需求了。
其实你可以换个角度想,如果全程并发gc其实回收效率并不会有stw高,而垃圾回收率不该就意味着简介地增加了gc的次数,所以我个人认为适当的stw还是有一定需要的,因此即使研发出了感觉也不会有多大改变,因为调优本身都是等价交换的思想,即得到了并发就降低吞吐量。
除非硬件以后发展到非常强大(或远超应用程序所需的资源)否则不可能改变这现象。因为软件到瓶颈后还是得看硬件性能
那就用苹果的arc,就是开发者长点心
即使实现了,也毫无意义。 原因,在多线程中,或云计算的虚拟CPU的核 都有权限挂起一段程序的某个线程,再以后的时间片再切换回来。 这是现代处理器多任务的本质特点,无法避免。只有少数实时处理程序能够幸免,比如声音和图像的实时编辑软件。你没有办法避免世界停下来,甚至软件本身都不容易察觉自己的时间片被挂起。
暂停是因为需要冻结当前的内存状态,来判断哪些内存是可以gc的…一直处于动态的内存分配状态下,gc是难以实现的…只能尽可能降低这个时间,但不能完全消灭…你gc算法执行需要时间,只要要保障这段时间内内存不能变动。
那得等量子计算机了吧大概。现有架构的计算机无论如何也是会暂停世界的,不管你用什么GC算法,cpu处理本质就是中断……中断……中断……
从内存角度来看,永远不可能。除非自己回收管理。内存交给系统管理,他必须将现有线程工作内容搬迁到新的地方去。假设内存无限大,系统线程随着在空闲内存上复制一模一样的数据和大小,那么GC暂停将会在一瞬间完成迁移。不过意义就是空间和拷贝的浪费。
华裔女赌王就此没落,生前让所有 浓情端午粽飘香,青浦邀你“云体 上海:“云端”展现端午节文化内 “甜咸大战”!明星艺人们喜欢什 如何做一个男人喜欢的情人(如何 当你和你同时出现在同一个场景中 如何在昏暗的光线下设置快门速度 教育在生活中的价值是什么? 世上做坏事的人死后会面临什么因 拜登就任总统后的第一步是什么? 同意/不同意:人生最重要的目标 二战后,德国在调和分歧方面做得 亚伯·林肯恨白人吗? 一个编辑能把你的故事毁得有多严 现在的iPhone6还能坚持再用一年 曹操为什么不杀司马懿? 现在买房是不是最便宜的时候,现 我身边的农业银行营业厅关了,AT 欧洲媒体评选CBA最有实力球员, 荣耀play的6+128和荣耀8X的6+128 蚂蚁集团是科技公司还是金融公司 请问机友华为mate30P与华为mate3 听说老詹修剪一次指甲需要5小时 为什么说宝宝“一月睡二月哭三月 戴笠人称戴老板,这个是怎么叫出 没有工作能一次性补缴社保么? 我想知道定向师范生和免费师范生 肺癌引起的咳嗽是怎样的呢? 5000mAh电池的5G手机推荐吗?要 恒大亚冠表现“差强人意”,你觉