JVM(Java Virtual Machine)
文章平均质量分 91
黑人小笼包
上海理工大学研究生
展开
-
常用的JVM配置参数
1.Trace跟踪参数①-verbose:gc表示输出虚拟机中GC的详细情况②-XX:+printGC开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。-XX:+PrintGCDetails 打印GC详细信息,只会在程序结束之后才会打印堆的相关信息-XX:+PrintGCTimeStamps打印GC发生的时间戳...原创 2018-07-29 15:30:15 · 4708 阅读 · 1 评论 -
JVM锁机制
1.线程安全如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。----使用锁,维护计数器的串行访问与安全性import java.util.ArrayList;import java.util.List;public class TestAddToLi...原创 2018-08-03 09:52:18 · 4374 阅读 · 0 评论 -
性能监控工具以及java堆分析OOM
一、性能监控工具1.系统性能监控Linux-确定系统运行的整体状态,基本定位问题所在-uptime:------系统时间------运行时间(例子中为127天)------连接数(每个终端算一个连接)------1,5,15分钟内的系统平均负载(运行队列中的平均进程数)-top命令:动态查看进程变化,监控linux的系统状况-vmstat:显示虚拟内...原创 2018-08-01 21:36:22 · 3531 阅读 · 0 评论 -
类加载器及其过程(较上一篇来说,这篇更加底层)
1.Class装载验证流程加载 装载类的第一阶段,取得类的二进制流 转为方法区的数据结构 在java堆中生成对应的java.lang.Class对象(与loadClass方法有关) 链接 验证 目的:保证Class流的格式正确 文件格式验证 是否以0xCAFEBABE开头 版本号是否合理 元数据验证 是否有父类 ...原创 2018-07-31 21:50:03 · 417 阅读 · 0 评论 -
GC参数和垃圾收集器
1.串行收集器-最古老、最稳定、效率高-可能产生较长的停顿:只使用一个线程,所以在多核中表现不足-XX:UserSerialGC启动串行收集器-新生代,老年代使用串行回收-新生代复制算法-老年代标记-压缩上图可知,在运行过程中,应用程序线程是由很多个的,而GC线程只有一个,GC过程中,应用程序暂停,直到GC结束,才开始重新运行。GC+时间,表示串行回收器,第一个图回...原创 2018-07-31 21:31:09 · 366 阅读 · 0 评论 -
JVM运行机制
1.JVM启动流程2.JVM基本结构2.1PC寄存器-每个线程拥有一个PC寄存器-在线程创建时,创建-指向下一条指令的地址-执行本地方法时,PC的值为undefined2.2方法区-保存装载的类信息-----类型的常量池-----字段,方法信息-----方法字节码-通常和永久区Perm关联在一起-----永久区用于保存相对稳定的数据...原创 2018-07-27 20:49:48 · 171 阅读 · 0 评论 -
初识JVM
1.JVM的概念JVM是java Virtual Machine的简称,意为java虚拟机JVM使用软件模拟java字节码的指令集。Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。为什么Java被称作是“平台无关的编程语言”?Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者...原创 2018-07-27 20:29:08 · 144 阅读 · 0 评论 -
GC算法和种类
1.GC的概念Garbage Collection垃圾收集 Java中,GC对象时堆空间和永久区2.Garbage Collection算法①引用计数法通过引用计算来回收垃圾原理:对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1,只要对象A的引用计数器的值为0,则对象A就不可能再被使用,可以进行回收了。上述从根对象(Gc...原创 2018-07-30 23:40:17 · 2197 阅读 · 0 评论 -
类加载、连接、初始化
1.加载类的加载指的是将类的.class文件中二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。在这个阶段,会执行类中声明的静态代码块。也就是类中的静态块执行时不需要等到类的初始化。1.1 加载class文件的方式 类加载的最终产品是位于堆区中的class对象,Cla...原创 2018-07-26 16:04:04 · 251 阅读 · 0 评论 -
Class文件结构
1.语言无关性JVM不直接通过编程语言执行程序,而是通过其他编程语言转换成的.class文件执行程序,这样实现了跨平台2.文件结构 u1,u2,u4,u8表示1,2,4,8个字节2.1魔数Magic是否是一个java的class文件 ,4个字节的长整型,如果不符合图中字符,一定不是java的class文件2.2版本能够看出来使用哪个版本的jdk进行编...原创 2018-08-03 15:03:57 · 157 阅读 · 0 评论