并发编程的挑战

上下文切换

即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms)。

CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。

引言
趁着这几天做毕设比较清闲,想再深入了解一下jvm(之前只是把基本内容看了一下),于是就把周志明的《深入理解Java虚拟机》第二版这本书粗略的看了一遍,看完之后获益良多,但是也有很多地方没搞懂,后面随着对技术的理解会再来重新读一遍该书。

内存管理机制

Java虚拟机内存模型包括程序计数器、虚拟机栈、本地方法栈、方法区、堆,如图所示

《深入理解Java虚拟机》小结