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(年老代)
标记-清除:标记需要回收的对象,统一回收;效率低,造成不连续的空间
复制:两块空间复制存活的对象,使用过的空间一次性清理掉(新生代回收)
标记-整理:标记需要回收的对象,存活对象统一向一端移动,清理边界以外的内存
网友评论