[基础原理-OS]简单的计算机启动过程、CPU内存分配、jvm swap

一 计算机启动过程

1 CPU的硬件结构

[基础原理-OS]简单的计算机启动过程、CPU内存分配、jvm swap

(1)中央处理器作为运算使用

(2)ROM:只读内存,存放着BIOS程序

(2)RAM:可读可写的内存

2 计算机启动过程

[基础原理-OS]简单的计算机启动过程、CPU内存分配、jvm swap

(1)CPU通电 (2) 执行ROM固定位置上的BIOS程序(3)BIOS执行各种引导程序(存储在外存,输入输出的驱动程序、操作系统引导程序)(4)BIOS将控制权交给操作系统(5)操作系统调度应用程序。

问题1:为什么JVM不直接放到BIOS上,并获得控制权?控制权这是操作系统干的事,远比jvm复杂,所以jvm只是应用程序

 

二 CPU内存分配

1 有两种分配策略:直接使用CPU物理内存和虚拟内存。

2 虚拟内存:CPU将内存划分成N个连续的固定大小的内存页,CPU访问虚拟内存时,根据一个内存映射表找到对应的物理内存地址,如果该虚拟内存地址没有对应的物理内存地址则会发出缺页中断请求,操作系统会处理这个请求。操作系统会申请分配改内存页的物理内存地址,如果内存不够,选择一个最久没有被访问的内存页淘汰放入swap区域(磁盘),在内存足够的时候恢复这块的内存。

3 物理内存:直接操作,直接操作相当于授权内存操作给操作系统以外的程序,这种情况是定制化BIOS。

4 swap是的使用条件:RAM内存已满,CPU将最久未使用的内存页淘汰放进swap区,RAM空间足够的时候再拷贝回RAM。

 

三 JVM SWAP导致GC时间很久

1 heap区空间大于RAM区,不停分配对象,会导致heap区对象的内存被转移搭配SWAP区。GC的时候会将SWAP区的对象转到RAM内存进行回收,SWAP区是磁盘,IO速度慢,所以导致GC时间很长

2 处理SWAP导致的GC时间太长

(1)堆上内存大于SWAP内存:原因是分配的对象内存太大,优化代码,减少堆上分配。

(2)堆上内存小于SWAP内存:原因是RAM内存太小,导致没有空间分配,heap区都没有分配满就到了SWAP区,这个情况只有增大RAM内存。

 

参考文章:https://time.geekbang.org/column/article/93802  

                  https://blog.****.net/u010602357/article/details/54286346/