写点什么

架构师训练营 2 期 - 第九周总结

用户头像
Geek_no_one
关注
发布于: 2020 年 12 月 20 日

概要

本周学习主要的内容是常见的 JVM 虚拟机,JVM 垃圾回收,Java 代码优化

重点内容

1.JVM 虚拟机

JVM 主要由三部分组成:

1)类加载器(Class Loader Sub-system)

负责动态加载类:在运行时,加载、链接、初始化一个类。

2)运行时数据区(Runtime Data Areas)

a)方法区:为共享区,所有的类级别的数据(包括静态变量)都会存储到这里

b)堆:也是共享区,所有的对象,以及它对应的实例变量和数组都被存储在这个区域

c)栈:每个线程将创建单独的运行时栈区。对于每个方法调用,将在栈存储器中产生一个条目,称为栈帧,所有局部变量都创建于栈内存。栈区不共享资源,所以是线程安全的。

d)程序计数寄存器:每个线程都有单独的 PC 寄存器,用于保存当前执行指令的地址。一旦执行指令,PC 寄存器将被下一条指令更新。

e)方法栈:Native 方法栈保存本地方法信息。Native 方法指的是 Java 通过 JNI 直接调用本地 C/C++ 库,相当于 C/C++ 暴露给 Java 的一个接口。

3)执行引擎(Execution Engine)

上述过程生成的字节码将由执行引擎读取字节码并逐个执行。这里又包括解释器,JIT 编译器和垃圾收集器。


2.JVM 垃圾回收


性能工具

JPS:用来输出 JVM 中运行的进程状态信息

Jstack:用来查看某个 Java 进程内的线程堆栈信息

Jmap & Jhat:用来查看堆内存使用状况

Jstat:JVM 统计监测工具

hprof:展现 CPU 使用率,统计堆内存使用情况

Jconsole:bin 目录下的工具,支持远程连接,可以查看 JVM 的概述,内存,线程等详细情况

3.Java 代码优化




用户头像

Geek_no_one

关注

还未添加个人签名 2020.05.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 2 期 - 第九周总结