JVM的概念 JAM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 指通过软件模拟的具有完整硬件系统功能的,运行在一种完整隔离环境中的完整计算机系统 有哪些虚拟机 - VMWare -Visual Box -JVM VMWare或者Visual Box都是使用软件模拟物理CPU的指令集 JVM使用软件模拟Java字节码的指令集 JVM发展史 初始JVM-Java和JVM的历史 1996年SUN JDK1.0Classic VM -纯解释运行,使用外挂进行JIT 19…
[深入JVM内核—原理.诊断与优化]的讲师“葛一鸣”,人称“一哥”,毕业于浙江工业大学,计算机软件与理论专业硕士,是国家认证系统分析师,OCP.2012年出版过<Java程序性能优化>,荣获51CTO读书频道“最受读者喜爱的原创IT技术图书奖”!! 葛老师得到了第1期140名学员的热烈赞扬,现第2期招生中,错过这期,再等半年. 一.为什么要开JVM培训课   1 百度搜大数据开发人才要求信息,发现大部分都需要有 JVM知识2 关于JVM知识的培训,目前线下的有几家,但水平参差.3  Scala…
文章目录 内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 永久区 Java栈溢出 直接内存溢出 小问题? MAT使用基础 柱状图显示 支配树 显示线程信息 显示堆总体信息,比如消耗最大的一些对象等 入引用和出引用 浅堆.深堆 浅堆 深堆 举个栗子 使用Visual VM分析堆 java自带的多功能分析工具,可以用来分析堆Dump Tomcat OOM分析案例 解决方法: 内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆.永久区.线程栈.直接内存,此外还有code cac…
文章目录 系统性能监控 系统性能监控- linux uptime top vmstat(虚拟内存统计) pidstat 系统性能监控 - windows 任务管理器 Perfmon Process Explorer 小问题? pslist pslist javaw -d(查看javaw这个进程中的线程信息) Java自带的工具 jps 举个栗子 jinfo 举个栗子 jmap Dump堆 jstack 举个栗子 JConsole Visual VM 实战分析 运行一程序ThreadBlockMa…
文章目录 GC的概念 GC算法 引用计数法 引用计数法的问题 标记清除 标记压缩 小问题 复制算法 复制算法的最大问题是:空间浪费 整合标记清理思想 -XX:+PrintGCDetails的输出 gc思想以及总结 分代思想 依据对象的存活周期进行分类,短命对象归为新生代,长命对象归为老年代. 根据不同代的特点,选取合适的收集算法 GC算法总结整理 可触及性 概念 可触及的 可复活的 不可触及的 举个栗子 注意点 根 Stop-The-World 举个栗子 GC的概念 Garbage Collec…
文章目录 JVM启动流程 PC寄存器 方法区 保存装载的类信息 通常和永久区(Perm)关联在一起 Java堆 Java栈 Java栈 – 局部变量表 ** 包含参数和局部变量 ** Java栈 – 函数调用组成帧栈 Java栈 – 操作数栈 Java栈 – 栈上分配 C++ 代码示例 堆上分配,每次需要清理空间 栈上分配,函数调用完成自动清理 java代码 总结: 栈.堆.方法区交互 小例子 JVM基本结构 内存模型 volatile 内存模型的几个重要概念 可见性 保证可见性的方法 有序性…
文章目录 class装载验证流程 class装载验证流程 class装载验证流程 -加载 class装载验证流程 -链接 验证 链接 -> 验证 文件格式的验证 元数据验证(class文件简单语义的验证) 字节码验证 (很复杂) 符号引用验证 class装载验证流程 -链接 准备 分配内存,并为类设置初始值 (方法区中) class装载验证流程 -链接 解析 符号引用替换为直接引用 class装载验证流程 – 初始化 小问题 什么是类装载器ClassLoader ClassLoader的重要方法…
文章目录 Trace跟踪参数 -verbose:gc (打开gc的跟踪情况) -XX:+printGC(打开gc的log开关,如果在运行的过程中出现了gc,就会打印出相关的信息.) -XX:+PrintGCDetails XX:+PrintGCTimeStamps -Xloggc:log/gc.log -XX:+PrintHeapAtGC -XX:+TraceClassLoading -XX:+PrintClassHistogram 堆的分配参数 Xmx –Xms 小问题: Xmn -XX:Ne…
文章目录 JVM的概念 JVM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 有哪些虚拟机 VMWare或者Visual Box都是使用软件模拟物理CPU的指令集 JVM使用软件模拟Java 字节码的指令集 JVM发展历史 1996年 SUN JDK 1.0 Classic VM 1997年 JDK1.1 发布 1998年 JDK1.2 Solaris Exact VM 2000年 JDK 1.3 Hotspot 作为默认虚拟机发布 2002年 JDK 1.4 Cl…
http://www.eimhe.com/forum.php?mod=viewthread&tid=142832&highlight=%C4%DA%BA%CB…