计算机内存的连续IO会比随机IO快,因为计算机读取内存会涉及多种时钟周期的延迟,而顺序IO则会减少这种时钟周期的发生,从而降低延迟,提高内存的访问效率。
静态语言要比动态语言快的其中两个原因是静态语言的数据类型是确定的,所以可以不用进行数据的类型推断,减少不必要的操作,其次是数据类型是确定的,对于一些数组来讲可以连续的存储在一块,而内存的顺序IO性能要比随机IO快3-5倍(通过内存的频率和各操作的时钟周期计算得来)。
计算机内存的分配管理从底层到技能能使用的对象分别是memblock,邻居子系统,进程的虚拟内存管理(mmap、brk)、各种计算机语言的自己实现的内存分配和对象管理。其中memblock是系统启动时检测可用内存,管理粒度比较大,处理完后就将可用的内存地址范围交给邻居子系统管理,邻居子系统的管理粒度较为细,以一个个数据页page为单位,其中数据页大小有多种,4K、8K、16K等,按需申请,如所需大小数据页不够,可小合大,大合小。进程的虚拟内存管理则将从邻居子系统申请的数据的真实物理地址转化成进程的虚拟地址进行使用,而不同的应用程序则可以根据自己的需求使用这些虚拟的内存地址,按自己的实际需求管理自己实现额度对象,比如说python语言实现的标记清除、分代回收方式来管理自己的内存对象。
除了CPU,网卡、磁盘也可以跟内存打交道,所以读取文件的时候不占用CPU资源。
指针变量的指针值也是存储在内存中的,取指针的值得先取指针变量的值,再通过这个值到相应的地址读取值,好处是作为函数的值传递的时候,能跟函数外面的变量操作同一份内初区域,也就是同一个变量值。