• 基于栈的指令集与基于寄存器的指令集


    Java编译器输出的指令流,基本上[1]是一种基于栈的指令集架构,它们依赖操作数栈进行工作

    与之相对的另外一套常用的指令集架构是基于寄存器的指令集

    举个最简单的例子,分别使用这两种指令集计算“1+1”的结果,基于栈的指令集会是这
    样子的:

    //基于栈的指令
    iconst_1
    iconst_1
    iadd
    istore_0
    
    //基于寄存器指令
    mov eax,1
    add eax,1

     基于栈的指令集主要的优点就是可移植, 缺点是执行速度慢,相同操作指令数要多很多. 

    寄存器由硬件直接提供[2],程序直接依赖这些硬件寄存器则不可避免地要受到硬件的约束。

    虽然栈架构指令集的代码非常紧凑,但是完成相同功能所需的指令数量一般会比寄存器架构多,因为出栈、入栈操作本身就产生了相当多的指令数量。更重要的是,栈实现在内存之中,频繁的栈访问也就意味着频繁的内存访问,相对于处理器来说,内存始终是执行速度的瓶颈。


    Tomcat服务器的类加载架构


    OSGi(Open Service Gateway Initiative)是OSGi联盟(OSGi Alliance)制定的一个基于Java语言的动态模块化规范,

    类库的可见性能得到非常精确的控制,一个模块里只有被Export过的Package才可能由外界访问,其他的Package和Class将会隐藏起来.

    除了更精确的模块划分和可见性控制外,引入OSGi的另外一个重要理由是,基于OSGi的程序很可能(只是很可能,并不是一定会)可以实现模块级的热插拔功能,当程序升级更新或调试除错时,可以只停用、重新安装然后启用程序的其中一部分,这对企业级程序开发来说是一个非常有诱惑力的特性. 

    但并非所有的应用都适合采用OSGi作为基础架构,OSGi在提供强大功能的同时,也引入了额外的复杂度,带来了线程死锁和内存泄漏的风险

  • 相关阅读:
    ASCII、GBK、Unicode、UTF-8、ISO-8859-1等常见字符编码介绍
    HTTP协议简介
    关于无知的一点思考
    Java 8 新特性之lambda表达式
    Java 8 新特性之新的日期时间库
    【java】<Jsoup>获取网页中的图片
    【数据结构】二叉树
    【转载】Android中UI线程与后台线程交互设计的5种方法
    【数据结构】广义表
    【c语言】数据结构(约瑟夫生者死者游戏的问题)
  • 原文地址:https://www.cnblogs.com/snow-man/p/10617230.html
Copyright © 2020-2023  润新知