美文网首页
Java虚拟机学习笔记

Java虚拟机学习笔记

作者: growing_hawk | 来源:发表于2018-10-20 15:50 被阅读0次

    HotSpot:

    Java虚拟机的一种实现技术,把Java的bytecode编译成Native code,然后运行

    Profiler Monitor:监视程序运行中,哪一部分运用频度大, 哪些对性能影响至关重要

    动态编译:HotSpot会把这部分动态地编译成机器码,Native code, 同时也对机器码进行优化(类似C编译器的一些优化),从而提高运行效率

    JIT虚拟机:(Just In Time)另一种虚拟机技术,动态编译

    静态编译器:(C++采用)通常很难准确预知程序运行过程中究竟什么部分最需要优化;静态编译器虽然可以把Java全部编译成Native Code,但却做不到动态编译器那样的优化

    Method inlining:函数调用因为有许多进栈出栈操作很浪费系统时间,有一种优化办法就是把原来的函数调用通过编译器的编译,改成非函数调用,把函数代码直接嵌到调用处,变成顺序执行;由于Java函数重载,支持动态联编等,因此静态编译器并不知道究竟应该把函数的哪个实现给inline了

    JVM内存分布

    线程计数器:线程执行的字节码行数,线程私有的;当线程进行切换的时,为了线程能恢复到正确的位置

    虚拟机桟:线程私有的,用于存储局部变量表、操作数栈、动态链接、方法出入口等信息,每个方法的调用到执行完成的过程就是一个栈帧入栈到出栈的过程

    方法区:线程共享区域,虚拟机加载的类信息、静态变量、常量

    堆:线程共享区域,存储实例对象

    本地方法桟:同虚拟机桟,本地方法栈是执行native方法的

    对象访问方式

    句柄访问

    直接指针访问(HotSpot使用的方式)

    垃圾回收方法

    引用计数法

    可达性分析算法

    垃圾回收算法

    Eden Space(伊甸园)

    Survivor Space(幸存者)

    Tenured Gen(年老代)

    标记-清除:标记需要回收的对象,统一回收;效率低,造成不连续的空间

    复制:两块空间复制存活的对象,使用过的空间一次性清理掉(新生代回收)

    标记-整理:标记需要回收的对象,存活对象统一向一端移动,清理边界以外的内存

    相关文章

      网友评论

          本文标题:Java虚拟机学习笔记

          本文链接:https://www.haomeiwen.com/subject/gurmzftx.html