jvm虚拟机分享课笔记
深入理解jvm虚拟机分享
1、 jvm执行流程
java-编译-.class—类加载器(随时随地加载)--【进入java虚拟机】
执行引擎—本地方法接口---本地方法库
运行时数据区
2、 运行时数据区
1) 程序计数器:记录程序执行位置,线程安全,计数器互不影响
2) 栈:创建一个线程,就会创建一个栈,执行一个方法就会创建一个栈帧,线程不共享 StackOverFlow
递归调用有内存泄漏风险
3) 堆:最大一块,java线程共享,存储对象地方,GC管理的主要区域,还分为新生代和老年代
4) 方法区:要加载类的信息(名称、修饰符等)、类中的静态变量,类中定义为final类型的变量、勒种Filekd信息、类中的方法信息。是被java线程锁共享的,不会频繁被GC回收,超过内存大小会抛出OutOfMemeory错误
5) 本地方法区 Native方法服务
3、 Java对象访问模式
1)、什么类型产生垃圾
引用类型
堆内存 栈内存 方法去
2)Object obj = 描述的是保存在栈内存中,而保存堆内存的引用,数据保存在本地变量表
new Object() 一个真正的对象,保存在堆内存中
4、 通过句柄访问
本地变量表—句柄池—对象实例数据指针+对象类型数据指针-à找到对应的对象实例和对象类型
5、 通过直接指针访问---hotSpot虚拟机
本地方法表---对象+数据---对象类型
2006年开源,sun改良
6、 三种JVM
JVM中不在保存句柄
Sun 改良了hotSpot
BEA 的JRockit
IBM JVMs
7、 JVM垃圾回收
对不需要的对象进行标记,而后进行清除
JVM堆内存
1.8后 使用了元空间,去除了永久带
为什么取消永久带
为了将hotSpot与JRockit两个虚拟机标准联合为一个
8、堆内存分为三块
新生代:新对象和没达到一定年龄年轻代
老年代:对象被长时间使用的对象。老年代空间要比年轻代大
元空间:像一些方法中的操作的临时变量,对象等,是物理内存使用
每个代都有伸缩区,可以调配
8、 年轻代GC实现算法:复制算法
算法:复制采用的方式为从根集合扫描出存货的对象
jvm虚拟机分享课笔记的更多相关文章
- 《深入理解JVM虚拟机》读书笔记
前言:<深入理解JVM虚拟机>是JAVA的经典著作之一,因为内容更偏向底层,所以之前一直没有好好的阅读过.最近因为刚好有空,又有了新目标.所以打算和<构架师的12项修炼>一起看 ...
- visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优
文/朱季谦 最近在做了一些JVM监控与调优的事情,算是第一次实践,还比较陌生,故而先把这一次经验简单记下笔记,这样,对后面学习调优方面时,不至于又想不起来了.本文档主要总结在window本地环境远程对 ...
- 清华大学ucore操作系统课笔记
操作系统 清华大学ucore操作系统课笔记 全文思维导图 1. 操作系统概述 1.1 什么是操作系统? 操作系统的定义 没有公认的精确定义 一个控制程序 一个系统软件 控制程序执行过程,防止错误和计算 ...
- 设置TOMCAT的JVM虚拟机内存大小
你知道如何设置TOMCAT的JVM虚拟机内存大小吗,这里和大家分享一下,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会影响程序的性能. 设置 ...
- 《深入java虚拟机》读书笔记之垃圾收集器与内存分配策略
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,或者是对其中不明白的地方做一些注释.主要是方便之后进行 ...
- JVM虚拟机深入理解+GC回收+类加载
旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81455449 一,前言 本文章是读了“深入理 ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- Java之JVM监控工具分享
Java之JVM监控工具分享 JVM的基本知识常用的也就是类加载机制,内存区域.分配.OOM,GC,JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法.收集 ...
- JVM 虚拟机内存深入探究
[<深入理解java虚拟机>-整理笔记] by lijun JVM虚拟机内存逻辑模型: 方法区(全局变量 静态数据 常量等) 线程共享 堆栈区(对象实例 数组数据 new generat ...
随机推荐
- c#英文大小写快捷键
选中一段英文 Ctrl+U 转小写 Ctrl+Shift+U 转大写
- 【Ueditor】富文本编辑使用
前提准备: 在http://ueditor.baidu.com/website/官网下载需要使用的版本.(我选用的1.4.3.1最新版本)因为这是以前做过的一个记录,现在移动到博客园保存记录.所有现在 ...
- cookie和session的区别和用法
1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以 ...
- 【Java基础】14、位运算之——按位与(&)操作——(快速取模算法)
学习redis 字典结构,hash找槽位 求槽位的索引值时,用到了 hash值 & sizemask操作, 其后的scan操作涉及扫描顺序逻辑,对同模的槽位 按一定规则扫描! 其中涉及位运算 ...
- Linux常用基本命令:三剑客命令之-awk输入输出分隔符
输入分隔符,英文原文为field separator,此处简称为FS,默认是空白字符(即空格),awk默认以空白字符为分隔符对每一行进行分割. 输出分割符,英文原文为output field sepa ...
- 纯css抖动效果
HTML: <button class="shake">按钮</button> CSS: .shake{ width: 120px; height: 33p ...
- python之装饰器(函数)
1. 装饰器 遵循的原则: 开闭原则: 对功能的扩展开放 对代码的修改是封闭 # 通用装饰器写法 # 存在的意义: 在不破坏原有函数和原有函数调用的基础上,给函数添加新的功能. def wrapp ...
- 排错-lr回放错误Vuser failed to initialize extensi...解决方法
lr回放错误:Vuser failed to initialize extension LrXml.dll解决方法 by:授客 QQ:1033553122 步骤1:找到LR安装位置,打开协议目录 ...
- Android View体系(一)视图坐标系
前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系.View的滑动.View的事件分发等文章来逐步介绍Android V ...
- Android系统启动流程 总结
整体流程大致如下: Android系统的启动,主要是指Android手机关机后,长按电源键后,Android手机开机的过程.从系统角度看,Android的启动程序可分为: 1.bootload ...