jvm系列
奔跑的树先生
滴水穿石,始于积累,代码开发,更在于平时的积累
展开
-
01.JVM-类加载
类的加载流程 类的加载流程包含:加载、验证、准备、解析、初始化 加载 作为第一个阶段,虚拟机需要完成了以后三个步骤 通过一个类的全限类名来获取定义的二进制字节流 将这个字节流所存储的静态结构转化为方法区运行时候的数据结构 在java堆中,生成一个代表这个类的java.lang.Class对象,最为对方法区中这些数据的访问入口 验证 确保被加载类的正确性,包含检测以下信息 文件格式的验证:验...转载 2019-05-15 15:52:43 · 85 阅读 · 0 评论 -
02.JVM-内存模型
内存模型图解概览 对于图上参数的控制 -Xms设置堆的最小空间大小 -Xmx设置堆的最大空间大小 -XX:NewSize设置新生代的最小空间大小 -XX:MaxNewSize设置新生代的最大空间大小 -XX:PermSize设置永久代的最小空间大小 -XX:MaxPermSize设置永久代的最大空间大小 没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来...原创 2019-06-10 20:07:44 · 91 阅读 · 0 评论 -
03.jvm-GC算法-查找可用对象
概述 垃圾收集 Garbage Collection 通常被称为“GC”, jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理 我们的内存垃圾回收主要集中于 java 堆和方法区中 在程序运行期间,这部分内存的分配和使用都是动态的 判断对象是否是垃圾的算法----对象存活的判断 Java语言规范没有明确地说明JV...原创 2019-06-10 20:08:31 · 158 阅读 · 0 评论 -
04-jvm-GC算法-算法理论
垃圾收集算法 标记-清除算法 标记清除算法是最基础的收集算法,为了解决引用计数法的问题而提出的,他使用了根集的概念, 分为“标记”和“清除”两个阶段:首先标记出所需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,它的标记过程其实就是前面的跟搜索算法中判断垃圾对象的标记过程 之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的 。 优点: 不...原创 2019-06-10 20:09:15 · 105 阅读 · 0 评论 -
05-jvm-GC算法-实际应用
垃圾收集器 如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现 性能度量指标 吞吐量:表示系统减去系统回收时间占总时间的比率,比如,系统运行了100秒,垃圾回收占用了1秒,那么吞吐量就是(100-1)/100 = 99% 垃圾回收消耗:和吞吐量相反,垃圾回收器消耗指的是垃圾回收器耗时与系统运行总时间的比值 停顿时间:指垃圾回收器运行的时候,系统停顿的时间 回收频...原创 2019-06-10 20:10:00 · 160 阅读 · 0 评论 -
06-jvm-查询命令-01
查询jvm中的信息 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的...原创 2019-06-10 20:10:32 · 428 阅读 · 0 评论 -
07-jvm-查询命令-02
jmap jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。 jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。 命令格式 jmap [o...原创 2019-06-10 20:11:06 · 87 阅读 · 0 评论