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

本文探讨了JVM为何不直接接管BIOS控制权,以及计算机启动过程中CPU内存分配策略。重点分析了虚拟内存的工作原理和JVM SWAP导致GC时间延长的问题,提供了解决方案。

一 计算机启动过程

1 CPU的硬件结构

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

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

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

2 计算机启动过程

(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.csdn.net/u010602357/article/details/54286346/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值