课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java虚拟机是程序员在学习Java编程开发语言的时候需要重点掌握的一个编程开发技术知识,下面我们就通过案例分析来了解一下,Java虚拟机学习需要掌握哪些知识点。
1.源码到字节码
我们将会了解到
源码到字节码的过程中到底发生了什么
.class文件内容到底有什么奥秘
2.类文件到虚拟机(类加载机制)
我们会了解到
类加载的过程是什么
类加载器的分类
3.运行时数据区
类文件被类装载器装载进JVM之后,类中的内容(比如变量,常量,方法,对象等数据)必然有个去处,也就是要存储起来,存储的位置对应在JVM中,我们称为「运行时数据区」。
其中,「方法区」和「堆」是所有线程共享的运行时数据区,随着JVM的启动而创建,伴着JVM的退出而销毁;
「程序计数器」和「本地栈」以及「虚拟机栈」是每个线程独享的运行时数据区,随着线程的创建退出而创建销毁。
4.JVM垃圾回收
Java程序员不需要手动释放内存正是得益于JVM的垃圾回收机制,我们将了解到
进行垃圾回收,我们如何确定哪些对象可以被清理呢?
确定垃圾之后,垃圾回收方法有哪些,各有什么优缺点?
JVM的分代回收是怎么回事儿?
JVM的垃圾回收器有哪些?各自的优缺点是什么?怎么查看JDK当前正在使用的是哪一款回收器?
5.JVM参数
JVM有很多配置参数,比如遇到OutOfMemoryError,我们就知道是堆空间不足了,可能是JVM分配的内存空间不足以让程序正常运行,这时候我们需要通过调整-Xmx参数增加内存空间。
如果遇到StackOverflowError,可能是线程栈空间不足,通常是因为方法递归层级或普通方法调用太多,导致栈帧溢出。我们可以先通过栈异常信息观察是否存在错误的递归调或者尝试调整-Xss参数增加栈空间大小。
再比如,JVM在执行字节码指令是通过解释执行的方式进行的,通常执行效率比较差,我们可以通过-server参数打开JIT的C2编译器进行即时编译优化。
我将会介绍JVM的常用参数,以及jps,jinfo,jstat,jstack,jmap,jconsole,jvisualvm等命令和工具的使用。
6.GC日志
我们会借助日志文件分析工具来分析GC日志文件,包括
ParallelGC日志
CMS日志
G1日志
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。