虚拟机设计与实现

最新书摘:
  • 肥猫爱编程
    2022-03-12
    第16章针对响应性的GC优化停止世界(stop-the-world,STW)式垃圾回收(GC)有一个明显的缺点。在回收过程中。应用程序需要被暂停。在服务器系统中这是个问题。事务处理延迟会对业务有很大影响。在客机系统中它也是不受欢迎的、响应性能不良也会影响用户交互体验。减少回收暂停时间是GC社区的最热门主题之一。减少回收暂停时间的常用技术是让回收和修改并发运行。它们可以交替执行或并行执行。并行执行中,回收器和修改器可以在多核平台不同核上的不同线程中同时运行。交替执行中,回收器与修改器并不同时运行,而是相互交错运行。①交替执行把单次回收分割为几个更短的阶段,因此把单独一次应用程序暂停减少为几次更短的暂停。2 并发执行允许修改器在回收过程中运行。因此消除了回收引起的应用程序暂停。从一个完整回收周期--也就是从根集枚举到死亡对象被回收的过程--的角度看,交替执行与并行执行都是并发回收。从设计的角度看,让回收器与修改器并行执行是让它们以交替方式执行的一个超集。在GC社区中,前者(并行执行)通常被称为“并发式GC”(concurrentGC),而后者(交替执行)被称为“增量式GC”(incrementalGC),指多次暂停修改器执行,以递增方式完成回收。还有一个正交的术语“并行GC”(parallelGC)是指回收由多个回收器并行执行,面回收本身可以是并发式或增量式的。如果一个并发回收器和一个修改器在单核平台上并行执行,操作系统(OS)线程调度器会让它们自动交替执行。而增量式GC自主调度回收器和修改器。由于虚拟机(VM)对回收和修改任务的了解要比OS调度器更详细,有时候增量式GC可以获得一些优势,而这是OS的盲目调度很难获得的。增量式GC的情况在某种程度上与实现一个用户级线程调度器类似,现代平台上的核数越多,用户级线程调度器得到的关注就越少,或者只在特定领域能够引发关注。本...
  • 肥猫爱编程
    2022-03-06
    14.2分代式与非分代式算法之间的适应性调整如果堆被分割为NOS和MOS,关于如何找到活跃对象,NOS上的部分堆回收有两个设计选。一个选择是从根集开始遍历整个堆,但是只回收NOS。它把NOS的活跃对象移动到MOS,但是MOS 中已有的对象保持不动。尽管MOS对象没有被回收,但回收器必须遍历MOS,因为NOS中的某些活跃对象只能通过包含MOS对象的路径到达。如果回收器不遍历MOS,这些对象就不况为活跃,这是错误的…………
  • RednaxelaFX
    2017-01-25
    //var_1 = var_2 + 2;1: iload_1 ; push variable 1 on stack2: iconst_2 ; push constant 2 on stack3: iadd ; add the stack top two items4: istore_1 ; pop stack and store to variable 1