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…
文章目录 内存溢出(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…
文章目录 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启动流程 PC寄存器 方法区 保存装载的类信息 通常和永久区(Perm)关联在一起 Java堆 Java栈 Java栈 – 局部变量表 ** 包含参数和局部变量 ** Java栈 – 函数调用组成帧栈 Java栈 – 操作数栈 Java栈 – 栈上分配 C++ 代码示例 堆上分配,每次需要清理空间 栈上分配,函数调用完成自动清理 java代码 总结: 栈.堆.方法区交互 小例子 JVM基本结构 内存模型 volatile 内存模型的几个重要概念 可见性 保证可见性的方法 有序性…
文章目录 class装载验证流程 class装载验证流程 class装载验证流程 -加载 class装载验证流程 -链接 验证 链接 -> 验证 文件格式的验证 元数据验证(class文件简单语义的验证) 字节码验证 (很复杂) 符号引用验证 class装载验证流程 -链接 准备 分配内存,并为类设置初始值 (方法区中) class装载验证流程 -链接 解析 符号引用替换为直接引用 class装载验证流程 – 初始化 小问题 什么是类装载器ClassLoader ClassLoader的重要方法…
文章目录 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…
文章目录 语言无关性 文件结构 魔数 版本 常量池 CONSTANT_Utf8 CONSTANT_Integer CONSTANT_String CONSTANT_NameAndType CONSTANT_Class CONSTANT_Fieldref ,CONSTANT_Methodref ,CONSTANT_InterfaceMethodref 访问标识符 类.超类.接口 字段 access_flags 小问题 方法 method_info access flag name_index u2…