《深入理解JVM》学习笔记(1)
来源:互联网 发布:中学生直播软件 编辑:程序博客网 时间:2024/05/16 11:10
第一章:走近Java
在java中各种硬件平台上的Java虚拟机,和JavaAPI类库统称为JRE;
Java程序设计语言与JRE构成了JDK;
java技术体系包括:1、Java程序设计语言;
2、各种硬件平台上的Java虚拟机;
3、Java API类库;
4、Class文件格式;
5、来自商业机构和开源社区的第三方Java类库;
如今,应用系统日益复杂,不同语言发挥各自的特长已经是一种趋势,不同语言混合完成一个系统已经是很平常的事情,例如PHP负责网站,Java负责后台业务逻辑,数据库使用mysql,从而构成一个常见的电商或网站;
注解:Java语言的劣势在近来越来越明显,如运行效率不高,必须依靠虚拟机等,从而让人们越来越越专注于其优势,只是使用其优势,和其他语言进行优势互补等。
第二部分:自动内存管理机制
第二章:Java内存区域与内存溢出
2.1概述
java不需要对内存进行操作,不容易出现内存泄露和内存溢出等问题,由虚拟机来管理内存,缺点在于除了问题不容易找到解决方案;
2.2运行时数据区域
这里对java运行时的数据所分的区域的进行表述并简单做出简要描述:
如图:
在上图中的方法区是指:
2.2.1 程序计数器(Program Count Register):从英文的表面意思可以得到这块区域是对程序数量的登记区域, OK,那就要明白,是什么程序在这里,数量是什么数,登记的机制是什么?
在《深入理解JVM》中,程序计数器是一块很小的区域,它可以被看作是当前线程所执行的字节码的行号指示器。字节码解释器是通过改变这个计数器的数值来选取下一条需要执行的字节码指令,循环,跳转,分支,异常处理,线程回复等基础功能都是依赖这个计数器来完成。
由于在Java虚拟机中多线程是依靠线程轮流切换并分配处理器执行时间来实现的;在任何一个确定的时刻,一个处理器只会且只能处理一个线程;因为,为了将线程切换恢复到正确的可执行状态也就是执行位置,就需要计数器来计算其单独为这个线程计数,并由单独的内存来存储这个数值;这样各个线程之间互不影响,内存独立等。
2.2.2 虚拟机栈(VM Stack)
java虚拟机栈,也就是通常所说的栈(Stack),用来存放方法调用过程中以及调出的信息等,简单的说就是Java执行方法的内存模型,注意这句话中执行方法,内存模型。它是线程私有的,生命周期与线程相同。
根据《深入理解JVM》,可以画出下图:
待更新。
0 0
- 《深入理解JVM》学习笔记(1)
- 深入理解jvm笔记1
- 《深入理解java虚拟机》学习笔记(1)--jvm内存区域
- 深入理解JVM--我的学习笔记
- 深入理解JVM笔记
- 《深入理解 Java 虚拟机》学习笔记(1)—— JVM 运行时数据区
- 【深入理解JVM】学习笔记——-1、JVM基本结构
- 【Java】深入理解JVM学习笔记(一) —— JVM数据区域
- jvm(1)深入理解java虚拟机笔记
- 深入理解JVM(1)
- 《深入理解jvm》笔记---第一章
- 深入理解JVM笔记三
- 深入理解JVM学习笔记-自动内存管理机制
- JVM内存模型(深入理解Java虚拟机学习笔记)
- JVM垃圾回收(深入理解Java虚拟机学习笔记)
- 深入理解JVM学习笔记——Java内存区域
- 深入理解JVM学习笔记——Java垃圾回收
- 深入理解Java虚拟机学习笔记-1.JVM内存模型
- 常用的ADB命令整理
- java 反射机制
- C#学习第三天
- IOS开发懒加载
- 当你想要放弃时,请用心看看这副漫画
- 《深入理解JVM》学习笔记(1)
- Android之WebView仿微信中图片操作(含二维码识别)
- smb协议读写远程文件
- LeetCode:Maximum Product of Word Lengths
- 简易自定义seg与tableview联动布局
- CakePHP控制器向视图传值总结
- IIC设备驱动实例
- Cannot assign to 'self' outside of a method in the init family
- SourceTree 使用教程