Java之Jvm调优

发布 : 2017-06-28 分类 : Java 浏览 :
1
无监控,不调优
1
Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行

Java内存结构

java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区/永久区和直接内存

程序计数器

1
2
3
程序计数器(Program Counter Register)是一块比较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器;
PCR为线程私有内存;
是唯一一个在Java虚拟机规范中没有规定任何OOM情况的区域;

虚拟机栈

本地方法栈

堆[能优化的部分]

新生代、老生代

1
2
3
4
5
6
7
8
9
和程序开发密切相关

应用系统对象都保存在Java堆中

所有线程共享Java堆

对分代GC来说,堆也是分代的

GC管理的主要区域

方法区/永久区

1
2
3
4
5
6
7
8
9
保存装载的类信息

  类型的常量池

  字段,方法信息

  方法字节码

通常和永久区(Perm)关联在一起

直接内存

堆内存的构成

堆内存参数调整

用VisualVM观察虚拟机堆信息

总结

线程私有的数据区域

1
2
Java虚拟机栈(Java Stack)
本地方法栈(Native Stack)

线程共有的数据区域

1
2
堆(Java Heap)
方法区

Java监控工具

jconsole

1
jconsole是一种集成了上面所有命令功能的可视化工具,可以分析jvm的内存使用情况和线程等信息

jvisualvm

1
2
提供了和jconsole的功能类似,提供了一大堆的插件
插件中,Visual GC(可视化GC)还是比较好用的,可视化GC可以看到内存的具体使用情况

垃圾收集算法

垃圾收集器选择

调优Tomcat并使用JMeter进行评测

本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/06/28/Java之Jvm调优/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹