zoukankan      html  css  js  c++  java
  • 基于栈的指令集与基于寄存器的指令集

    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在提供强大功能的同时,也引入了额外的复杂度,带来了线程死锁和内存泄漏的风险

  • 相关阅读:
    atitit.为什么java体系开发效率这样低的原因and解决
    使用11g DNFS建立基于DNFS的tablespace
    MalformedObjectNameException: Invalid character '' in value part of property
    Spring MVC DispatcherServlet绑定多种URL
    chrome与pdf的事情
    JSP获取绝对物理地址
    spring mvc 与 jasper Report集成
    HttpServletRequest和ServletRequest的区别
    aJax请求结果中包含form的问题
    javascript与java编码互转
  • 原文地址:https://www.cnblogs.com/snow-man/p/10617230.html
Copyright © 2011-2022 走看看