JVM原理及调优

一、JVM的生命周期
1、程序开始执行时他才运行,程序结束时他就停止。
2、在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机(JVM)。
3、JVM总是开始于一个main()方法,这个方法必须是公有、返回void、只接受一个字符串数组。
4、在程序执行时,你必须给JVM指明这个包含main()方法的类名。
5、Main()方法是程序的起点,他被执行的线程初始化为程序的初始线程,程序中其他的线程都由他来启动。
6、守护线程是JVM自己使用的线程,比如负责垃圾收集的线程就是一个守护线程。
7、 只要JVM中还有普通的线程在执行,Java虚拟机就不会停止。如果有足够的权限,你可以调用exit()方法终止程序。
补充:
*1、Java中的线程分为两种:守护线程 (daemon)和普通线程(non-daemon)。
2、包含Main()方法的初始线程不是守护线程。*
二、JVM的体系结构
1、类加载器子系统(class loader subsystem):负责加载程序中的类型(类和接口),并赋予唯一的名字。每一个JVM都含有一个类加载器子系统。
2、执行引擎(execution engine):负责执行被加载类中包含的指令。每一个JVM都含有一个执行引擎。
3、数据区(data areas):
3.1数据区中的一部分是整个程序共有,其他部分被单独的线程控制。
3.2程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程序中的对象、方法的参数、返回值、本地变量、处理的中间变量等等。Java虚拟机将 这些信息统统保存在数据区(data areas)中。
4、方法区(method area):被整个程序共享。Java虚拟机加载并解析一个类以后,将从类文件中解析出来的信息保存在方法区中。
5、堆(heap):被整个程序共享。程序执行时创建的对象都保存在堆中。
6、 当一个线程被创建时,会被分配只属于他自己的PC寄存器“pc register”(程序计数器)和Java堆栈(Java stack)。
7、当线程不掉用本地方法时,PC寄存器中保存线程执行的下一条指令。Java堆栈保存了一个线程调用方法时的状态,包括本地变量、调用方法的 参数、返回值、处理的中间变量。
8、调用本地方法时的状态保存在本地方法堆栈中(native method stacks),可能再寄存器或者其他非平台独立的内存中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值