随笔分类 -  jvm

jvm相关笔记
摘要:当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。 1、Java heap space 当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 ja 阅读全文
posted @ 2020-12-29 17:08 link_ed 阅读(319) 评论(0) 推荐(0) 编辑
摘要:运行时栈帧结构 局部变量表 操作数栈 动态连接 方法返回地址 附加信息 java虚拟机的运行时数据区域: 之前我们已经了解了有这么个区域,而且已经知道有栈帧这么一个结构,那我们就从方法执行的角度来剖析栈帧。 栈帧也叫过程活动记录,是编译器用来进行方法调用和方法执行的一种数据结构,它是虚拟机运行时数据 阅读全文
posted @ 2020-12-22 10:23 link_ed 阅读(76) 评论(0) 推荐(0) 编辑
摘要:概述 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制 相当于懒加载机制 OSGI 就是通过类的加载机制实现的 类加载时机 加载: 连接: 初始化: 在以下情况才会进行初始化 1、遇到new、gets 阅读全文
posted @ 2020-12-22 10:21 link_ed 阅读(147) 评论(0) 推荐(0) 编辑
摘要:简介 java虚拟机的指令是由一个字节长度的,代表着某种特定操作含义的数字,称之为操作码,以及跟随其后的零至多个代表此操作所需参数的操作数而构成 操作码的长度为1个字节,因此最大只有256条 基于栈的指令集架构 (还有一种是基于寄存器的) 字节码与数据类型 i l f d a代表引用类型 加载和存储 阅读全文
posted @ 2020-12-22 10:18 link_ed 阅读(188) 评论(0) 推荐(0) 编辑
摘要:Class文件简介和发展历史 class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在class文件之中,中间没有添加任何分隔符,整个class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在 当遇到8位字节以上的空间数据项时,则会按照高位在前的方式分割成若 阅读全文
posted @ 2020-12-22 10:14 link_ed 阅读(74) 评论(0) 推荐(0) 编辑
摘要:知识 工具 数据 经验 案例1 问题:经常有用户反馈长时间出现卡顿的现象 处理思路: 偶发,所以不会是sql问题 监控cpu 监控内存 发现fullGC频繁,每次需要20-30s,停顿时间过长 总结: 大对象过多,jvm内存设置的过大,老年代经常占满触发fullgc,老年代内存过大每次fullgc时 阅读全文
posted @ 2020-12-22 09:45 link_ed 阅读(103) 评论(0) 推荐(0) 编辑
摘要:jdk安装包bin目录下的.exe 命令行工具都是依赖于tools.jar 命令行工具 jps 列出当前运行的jvm进程 usage: jps [-help] jps [-q] [-mlvV] [<hostid>] Definitions: <hostid>: <hostname>[:<port>] 阅读全文
posted @ 2020-12-22 09:43 link_ed 阅读(88) 评论(0) 推荐(0) 编辑
摘要:内存分配策略 优先分配到Eden -XX:+UseSerialGc 指定SerialGc垃圾收集器 jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代) jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel 阅读全文
posted @ 2020-12-22 09:38 link_ed 阅读(73) 评论(0) 推荐(0) 编辑
摘要:https://docs.oracle.com/javase/7/docs/ JDK java de JRE java runtime environment JVM java virtual machine 内存溢出模拟 java.lang.OutOfMemoryError: java heap 阅读全文
posted @ 2020-12-21 12:48 link_ed 阅读(70) 评论(0) 推荐(0) 编辑
摘要:垃圾回收 如何判定对象为垃圾对象 引用计数法 在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器+1,当引用失效时,引用计数器-1。引用计数器为零时认为失效 这种方法解决不了相互引用的情况 虚拟机一般不用 可达性分析法 定义GCRoot(根节点),从GCRoot往下寻找,对象与gcr 阅读全文
posted @ 2020-12-21 12:46 link_ed 阅读(60) 评论(0) 推荐(0) 编辑