文档章节

JVM工作原理

o
 osc_4nmshwhm
发布于 2018/08/06 22:29
字数 705
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)

 

Java虚拟机(JVM) 是程序与底层操作系统和硬件无关的关键, 实现了程序与操作系统的分离,从而实现了Java 的平台无关性。 

首先,编写.java文件,编译器将编译成.class字节码文件,运行时,.class文件被装载入内存。进入虚拟机后,由解释器解释执行,转换成对应操作系统的机器码

 

JVM 的生命周期:当Java程序启动的时候,就产生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了

 

 

每个JVM都有两种机制:

①类装载子系统:装载具有适合名称的类或接口

②执行引擎:负责执行包含在已装载的类或接口中的指令 

 

3、JVM内存管理及垃圾回收机制

·JVM内存五大区域:方法区、Java堆、Java栈、本地方法栈、程序计数器及其他隐含寄存器

栈管运行,堆管存储

说明:JVM调优主要就是优化 Heap堆 和 Method Area 方法区。

参见笔记!

 

 

栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。

栈帧中主要保存3类数据:

本地变量(Local Variables):输入参数和输出参数以及方法内的变量;

栈操作(Operand Stack):记录出栈、入栈的操作;

栈帧数据(Frame Data):包括类文件、方法等等。

 

 

堆这块区域是JVM中最大的,应用的对象和数据都是存在这个区域,这块区域也是线程共享的,也是 gc 主要的回收区,一个 JVM 实例只存在一个堆类存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,以方便执行器执行,堆内存分为三部分:

 

垃圾收集器在对堆区和方法区进行回收前,首先要确定这些区域的对象哪些可以被回收,哪些暂时还不能回收,这就要用到判断对象是否存活的算法!(面试官肯定没少问你吧)

 算法:引用计数法 引用可达性分析; 标记清除算法,标记整理算法,分代收集算法

 

https://baijiahao.baidu.com/s?id=1606480770208000096&wfr=spider&for=pc

 

http://www.cnblogs.com/lishun1005/p/6019678.html#4021930

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
《深入理解Java虚拟机(第2版)》分享下载

书籍信息 书名:《深入理解Java虚拟机(第2版)》 副标题:JVM高级特性与最佳实践 作者: 周志明 豆瓣评分:9分 内容简介 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》内容简介:第1...

开始以后_
02/19
19
0
JAVA 多线程

jvm主内存与工作内存 谈谈Java中的volatile Java volatile原理总结 锁和监视器之间的区别 – Java并发 Java线程间通信之wait/notify Java多线程基础——线程间通信 JAVA多线程之volatile 与 ...

xiaoxiao803
2018/02/07
0
0
java-索引

集合 集合之深入理解HashMap HashMap的实现原理,以及在JDK1.7和1.8的区别 Java集合---ConcurrentHashMap原理分析 ConcurrentHashMap原理分析(1.7与1.8) 对一致性Hash算法,Java代码实现的...

osc_s8kmhvea
2019/03/17
4
0
精通Java虚拟机必读书籍推荐书单

书单整理目前能见到的比较热门的与jvm相关的书籍,要想精通Java虚拟机,那就先来看一下这些书吧! 文末附电子书打包下载地址 书单1:深入理解Java虚拟机:JVM高级特性与最佳实践 推荐语:Jav...

AlwaysBeCoding
04/18
26
0
学习JVM必看书籍

学习JVM的相关资料 《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》 基于最新JDK1.7,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行全面而深入的分析,深...

程c序猿
2019/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux系统检查用户账户到期时间

如果你在 Linux 上启用了密码策略。密码必须在到期前进行更改,并且登录到系统时会收到通知。如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。在许多情况下,这可能会在无需密码登...

老孟的Linux私房菜
11分钟前
9
0
关于南京哪里有开餐饮费发票?

关于南京哪里有开餐饮费发票?聚焦餐饮行业,谈话〖18 7一電一7 5 3 8一徴一3331〗研究院昨发布数据显示,今年上半年,全国餐饮行业招聘需求增长46.18%,平均月薪6387元.随着餐饮行业的快速...

点击fojewio
43分钟前
7
0
android studio 4.0 打开DDMS

1、先找到AndroidStudio配置的SDK路径; 2、在SDK的/tools/路径下有个monitor.bat 的批处理文件; 3、鼠标连续点击两下monitor.bat这个批处理文件,在屏幕上会打开一个类似CMD的命令行中输入...

chenhongjiang
46分钟前
10
0
如何在Android中使用SharedPreferences来存储,获取和编辑值

问题: Closed . 已关闭 。 This question needs to be more focused. 这个问题需要更加集中。 It is not currently accepting answers. 它当前不接受答案。 Learn more . 了解更多 。 Want...

fyin1314
55分钟前
6
0
【JDK1.8】LinkedList源码分析

LinkedList的特性 LinkedList内部使用双向链表作为存储结构,LinkedList可以理解为链表的扩展对象,封装了常用的和非常用的操作链表的方法。以及在通过索引获取元素时的简单优化,通常Linke...

XuePeng77
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部