微前端架构如何改变企业的开发模式与效率提升
1741
2022-09-29
使用物理内存做虚拟内存改进intellij idea性能
我是很想学Java,但苦于intellij idea实在是太慢了:打开慢,加载项目慢,gradle同步更慢,甚至,打开项目的project structure更离谱,10分钟才出来一个窗口。这时候,硬盘灯常亮,闪都不闪,就一直亮,电脑非常非常卡,人坐在电脑前,像个傻逼一样,什么都做不了。
参数?早调了。按照网上的各路古今中外大牛说的方法都调了,xms1g,xmx4g啥的。但并没有什么卵用。按理说,我的机器10g内存,应该是足够的。硬盘慢点,5400转。可是,为什么要狂读硬盘呢?操作系统是64位的,内存消耗不到50%,为啥要揪住硬盘不放?
前天偶然想起,会不会跟虚拟内存有关?打开相关选项,发觉这个“分页文件”已经超过10G了。系统还建议我设到15G。15G,我给个皇帝你当好不好。
我设置为“无分页文件”,重启机器后好像没啥问题。但打开intellij idea后不久,就报“虚拟内存不足”的错误,并退了出来。
看来intellij idea一定要用到放在硬盘上的这个分页文件了。这到底是为什么呢?
众所周知,操作系统将内存的使用抽象成虚拟内存(也叫逻辑内存,逻辑内存与物理内存有一个映射的过程),进程并不直接使用物理内存,面对的是逻辑内存。在32位时代,由于字长限制,操作系统只能识别4G内存,因此物理内存只能用到4G。每个进程理论上都有4G(?)的虚拟内存,这样的话,物理内存就远远不够了,必然有很多东东要放到硬盘上。
但是,现在已经是64位了,物理内存不再受限于4G。那么问题来了,为什么我的内存还有那么多空间,你intellij idea还非要往硬盘上放东西呢?
这一定不是intellij idea干的,因为进程用的是逻辑内存(虚拟内存),它根本不知道真实的数据会放到物理内存还是硬盘的分页文件。都是操作系统在控制这一切。那么,在物理内存还那么宽裕的情况下,操作系统为什么还是对硬盘念念不忘呢?不知道,也许它是觉得我的内存就10G,谈不上很多,得节省着用,一个进程不能用太多,虽然还有富余,但要留着别的进程突然要用,否则进程一多,就麻烦了。要考虑通用性。
嗯,我猜它的逻辑就是这样的。
好吧,既然我的内存基本都用不完,我就-了个primo ramdisk,分配了2.5g内存做一个虚拟盘,然后将分页文件设置到该虚拟盘。
事实证明,效果改善明显,起码打开intellij idea的时候,硬盘灯是在闪烁而不是常亮,机器也没那么卡了,我可以多任务;开机也比以往快了很多。以往,我开机要等超过15分钟才能工作,现在一开机就能点东点西。
有些大牛说,用内存盘存放分页文件,并不会带来性能的改善。这我就不懂了,因为事实上不管内存多大,操作系统都要放一些东东到分页文件里,既然这样,分页文件在内存快还是硬盘快?肯定是内存快了。如果我内存更大一点,分更多的内存做虚拟盘,或者改用固态硬盘,效果一定更加好。
现在唯一的问题是,在intellij idea 同步gradle的时候,内存往往会耗尽而退出来。这个原因好懂,以前有硬盘可以充当扩展内存,基本上是要多少有多少,对进程来说,内存就是无限量供应;现在不行了,扩展内存充其量只能到2.5G。并且这个扩展内存还是从物理内存里分出去的,内存盘大一点,物理内存就小了一点,所以内存盘的大小如何设置我着实费了一些工夫。我现在这个行为,相当于禁止了系统使用硬盘作扩展内存,强迫或者欺骗它一定使用物理内存。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~