深入理解Java虚拟机开篇
也是久仰这本书了,今天就开始尝试阅读。
不积跬步无以至千里,勉励自己,每天看几页,也是一种收获。
对Java的印象仅仅停留在面对对象的语言上,接口多,丰富的类库,可移植性好。实际编程也不多,做过一个课程设计用到JDBC等技术,以后也会尝试阅读J2EE方面的书籍。
c和c++的开发人员在内存管理领域拥有最高的权力,负责每一个对象从产生到终结;而Java在虚拟机自动内存管理机制下,不必为每一个new操作写配对的free代码,不容易出现内存泄漏和内存溢出的问题,因此我们需要了解虚拟机是怎样使用内存的。
java虚拟机会把管理的内存划分为若干个不同的数据区域:
- 程序计数器(PC):取指令。java的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定时刻只会执行一条线程中的命令。因此每条线程都需要一个独立的PC,各线程PC互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。
- 虚拟机栈:也是线程私有,生命周期与线程相同。每个java方法在执行的时候会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用到执行完成,对应一个栈帧在虚拟机栈从入栈到出栈的过程。
- 本地方法栈:与虚拟机栈相似,区别在于方法栈为Native方法服务。(简单地讲,一个Native Method就是一个java调用非java代码的接口)
- java堆:java虚拟机所管理的内存中最大的一块。被所有线程共享的一块内存区域,在虚拟机启动时创建,唯一目的是存放对象实例,几乎所有的对象实例都在这里分配内存。java堆是垃圾收集器管理的主要区域(GC堆)。
- 方法区:与java堆一样所有线程共享,**用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。**它有个很有意思的别名Non-Heap(非堆)。java虚拟机规范对方法区限制非常宽松,可以不选择垃圾收集。
- 运行时常量池:方法区的一部分,用于存放编译器生成的各种字面量和符号应用。
- 直接内存。
深入理解Java虚拟机开篇相关推荐
- 《深入理解Java虚拟机》第 3 版里面到底多了哪些知识点?本文竟然得到了本书作者的认可!
这是why的第 47 篇原创文章 荒腔走板 大家好,我是 why.老规矩,先是简短的荒腔走板聊聊生活. 上面的图是前几天拍的,那天晚上下班后,刚刚走进小区就看到了这一轮弯月和旁边那一颗特别特别亮的星星 ...
- 《深入理解Java虚拟机:JVM高级特性与最佳实践》书评
不知不觉做JAVA开发已经两年多了,<深入理解JAVA虚拟机>第二版是我很早就买的书,大多数时间也一直放在我的工作桌上.想要学习写一门语言的话很简单,掌握基本的语法和编程思想就可以上手工作 ...
- 【深入理解Java虚拟机】保姆级整理汇总 第一部分:走近Java (一) Java技术体系
目录 一.开篇感言 二.正文 1.Java技术体系 1.1 Java技术体系介绍 1.2 JDK和JRE范围 1.3 Java主要产品线 1.4 Java发展史 1.5 Java虚拟机家族 一.开篇感 ...
- mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)
对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...
- 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器
垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...
- JAVA好书之《深入理解Java虚拟机》
最近打算做好现有工作的前提下,扎实一下自己专业的技术知识,并将相关的经典书也记录一下.今天看了一些JVM相关的知识,这里面的经典是<深入理解Java虚拟机>,适合有点基础又想深入理解其中原 ...
- 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...
虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机-如何利用 Visual ...
- 深入理解 Java 虚拟机 - 你了解 GC 算法原理吗
来自:好好学Java 虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机- ...
- 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析
来自:好好学java 话不多说,今天就分析一下一些常用的Java虚拟机的参数设置,以及如何更好的使用! 1 JVM参数简介 首先想说的是其实这些参数我们并不是陌生的,在平时的开发和使用中经常都会遇到, ...
最新文章
- 程序员的自我修养--链接、装载与库笔记:静态链接
- 程序员缺乏经验的 7 种表现!
- JVM运行时数据区---堆(TLAB)
- 聊聊flink的CheckpointScheduler
- 利用全局数据实现数据通信
- ML之FE:特征工程之数据处理常用案例总结(数值型数据处理、类别型数据处理)及其代码实现
- linux---基础04
- centos 安装tmux
- c++ 按行读取txt文件并赋值_C 语言入门 19 读取txt文件中的数字,消除其中连续重复的数字...
- MacOS上禁用自动启动Adobe Creative Cloud
- 二分类模型评价指标-总结
- 《硅谷钢铁侠的跨界传奇-埃隆马斯克传》阅读笔记
- 【实用性程序】弧微分计算圆周长
- python 对正整数分解质因数
- 网页超链接:主页与子页的具体链接
- 武汉大学计算机学院周维,周维勋
- 苹果怎么换行打字_微信新功能上线!安卓苹果都有!网友:再也不怕被刷屏了!!...
- java后端开发工程师笔试_后端开发工程师面试参考
- LDV7 语音识别模块使用方法
- 115846-45-2、二肽标记肽Suc-GP-对硝基苯胺、 Suc-Gly-Pro-pNA
热门文章
- Opencv:图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数
- linux无线鼠标右键自动选择,2020年高性价比无线鼠标推荐
- matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制
- 和尚挑水安排(回溯问题)
- 侍魂胧月服务器维护,侍魂胧月传说什么时候开新区 新区开服时间表
- Java-IO-字符流
- 钱塘湖春行 白居易 唐代
- TIA博途中如何访问不同IP网段的PLC以及不同IP网段的PLC如何通信?
- apache-tomcat-10.0.18配置
- dpdk mempool的逻辑