第一章:为什么要讲JVM

第二章:Windows机器上测试

  • 2.1 Servers模式和Client模式
  • 2.2 JVM三种类型参数
  • 2.3 在IDEA中测试boolean类型
  • 2.4 在IDEA中测试非boolean类型
  • 2.5 jinfo命令帮助
  • 2.6 PrintFlags系列参数
  • 2.7 Xmx Xms参数

第三章:JVM运行时的数据区

第一章:为什么要讲JVM

面试相关肯定跑不了:考验基本功、参数监控、性能调优

  • 不管是Hadoop系列还是Spark,OOM是什么东西:针对不同异常信息采用不同的解决方案
  • GC模块,不同的垃圾收集器拥有不同的特性

本地Windows上肯定都安装了jdk,本次测试使用jdk1.8,和jdk1.7是有很大区别的。

https://docs.oracle.com/javase/specs/jvms/se8.html/index.html

2.1 Servers模式和Client模式

JVM中有两个模式:Server和Client,Client模式默认是32位的

现在的机器默认都是Server模式:

C:\Users\Administrator>java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

mixed mode:

Java是一种解释型、编译型的语言呢?
解释型不会把java代码转为本地代码,编译型是第一次会把java转为本地代码。

2.2 JVM三种类型参数

  1. 标准 从jdk发布到现在的版本,这些参数并没有发生太多的变化,比较稳定:java -version
  2. X 相对的变化较少的
  3. XX JVM调优最为重要的

X参数还分为boolean和非boolean,我们在讲Hive的时候,set key = value

  • boolean:-XX:[+/-] name
  • -XX: +UseG1GC -XX:-UseG1GC +表示启用,-表示禁用

问题:

jdk7到jdk8发生了什么样的变化?
JDK7:永久代
JDK8:Metaspace

interpreted mode:

C:\Program Files (x86)\cmder
λ java -Xint -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, interpreted mode)

compiled mode:

C:\Program Files (x86)\cmder
λ java -Xcomp -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, compiled mode)

2.3 在IDEA中测试boolean:

新建包,新建JvmDemo类:

1、单纯只打印一句话的话,直接就结束了,我们让线程睡一会
package jvm;

public class JvmDemo {
public static void main(String[] args) throws InterruptedException {
System.out.println(“若泽数据欢迎您”);

    Thread.sleep(100000);
}

}

2、在控制台上使用jps命令查看:
C:\Program Files (x86)\cmder
λ jps
12752 Launcher
13744 JvmDemo
10536 Jps
14220
1964 NailgunRunner

3、表示这个参数没有开启
C:\Program Files (x86)\cmder
λ jinfo -flag PrintGCDetails 13744
-XX:-PrintGCDetails

4、如何开启这个参数:


重新运行一遍输出程序:
再去到控制台窗口中,查看发现这个参数被开启了。

总结:

  • 在boolean类型中,使用-XX去设置,使用+、-号来设置或赋值,jps去获取到它的pid;
    jinfo -flag name pid

2.4 在IDEA中测试非boolean:

  • 非Boolean类型中,-XX:name = value

获取Metaspace的大小,目前是20来兆。

jinfo -flag MetaspaceSize 3768

C:\Program Files (x86)\cmder
λ jinfo -flag MetaspaceSize 3768
-XX:MetaspaceSize=21807104

还是在Edit Configurations中,

  • -XX:MetaspaceSize=128M
C:\Program Files (x86)\cmder
λ jinfo -flag MetaspaceSize 2260
-XX:MetaspaceSize=134217728

年龄阈值,默认15(对象被复制的次数)

C:\Program Files (x86)\cmder
λ jinfo -flag MaxTenuringThreshold 2260
-XX:MaxTenuringThreshold=15

2.5 jinfo命令帮助

直接在cmder控制台上输入jinfo查看命令帮助:

  • jinfo -flag InitialHeapSize

    λ jinfo -flag InitialHeapSize 2260
    -XX:InitialHeapSize=268435456

  • jinfo -flags 2260 我们运行当前程序的所有信息

C:\Program Files (x86)\cmder
λ jinfo -flags 2260
Attaching to process ID 2260, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4267704320 -XX:MaxNewSize=1422393344 -XX:MetaspaceSize=134217728 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+PrintGCDetails -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -XX:+PrintGCDetails -XX:MetaspaceSize=128M -javaagent:D:\intellij idea\IntelliJ IDEA 2018.1\lib\idea_rt.jar=64963:D:\intellij idea\IntelliJ IDEA 2018.1\bin -Dfile.encoding=UTF-8

剖析:Command line中的是在idea中传入的参数

学到此时:学会了两个:
1、jinfo -flag name pid
2、jinfo -flags pid

2.6 PrintFlags系列参数

PrintFlags系列参数:

  • -XX:+PrintFlagsInitial
  • -XX:+PrintFlagsFinal

java -XX:PrintFlagsInitial
java -XX:PrintFlagsFinal
= 默认值
:=修改过的

2.7 几个特殊的XX参数

-Xms: min -XX:InitialHeapSize
-Xmx: max -XX:MaxHeapSize
-Xss -XX:ThreadStackSize

默认堆内存:256M 是总内存的1/64
最大堆内存:4070M 是总内存的1/4

问题:这两个值是怎么来的呢,默认堆内存是机器总内存的 1/64,最大堆内存是1/4.

抛出问题:

为什么此时这个ThreadStackSize参数是0?

小结:最佳实践,生产上最小=最大,怎样去查看名字的参数。

第三章:JVM运行时的数据区

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5

PK老师经典话语:
一流企业做标准
二流企业做产品
三流企业做服务
四流企业做项目

待续。。。

若泽数据公开课-JVM01相关推荐

  1. 网络智能和大数据公开课Homework3 Map-Reduce编程

    Web Intelligence and Big Data  by Dr. Gautam Shroff 这门课是关于大数据处理,本周是第一次编程作业,要求使用Map-Reduce对文本数据进行统计.使 ...

  2. 免费公开课报名 | 达观数据个性化推荐系统实践

    在人工智能浪潮之下,个性化推荐技术更是风靡业界,在金融.传媒.短视频.电商.教育等诸多领域大放异彩,影响人们生活的方方面面.不仅方便了人们获取各种各样的信息,还给企业带来了收益的大幅提升. 本次公开课 ...

  3. 免费公开课 | 数据科学家,从入门到精进!【今晚福利】

    <哈佛商业评论>宣布,"数据科学家"是二十一世纪最性感的职业.数据科学家究竟是一群怎样的人?各行各业高薪难求的他们又是如何开启自己的职业生涯的? 滴滴 ~福利卡!!! ...

  4. 近期活动盘点:数据科学研究院论坛“人文社科专场、全球最大的免费编程社区公开课、DeeCamp2019:实战AI 铸造定雨神针...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 数据科学研究院五周年系列论坛之"人文社科专场" 2019年4月25日 景昃鸣禽集,水木湛清华.2019年4月将迎来清华 ...

  5. 近期活动盘点:大数据应用中日交流论坛、几位专家带你认识Flink、青年自强AI计划 CV免费公开课!(11.12-11.23)...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 大数据应用中日交流论坛 2018年11月15日 活动简介: [主题]大数据应用中日交流论坛 [日期]2018年11月15日14:00-18 ...

  6. 【8.23更新--技术干货全家桶】大数据计算技术共享计划 — MaxCompute技术公开课第二季...

    2018年5月-6月 MaxCompute 开启大数据计算技术共享计划技术公开课第一季,有超过1500名用户以及大数据爱好者参与到直播学习中来.7月,我们又开启第二季直播,5次大数据技术直播,有近60 ...

  7. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟

    AI公开课:19.05.29 浣军 百度大数据实验室主任<AutoDL 自动化深度学习建模的算法和应用>课堂笔记以及个人感悟 导读        浣军博士,汉族,1975年出生于江苏苏州, ...

  8. 2021阿里巴巴大数据技术公开课第一季:外部工具连接SaaS模式云数仓MaxCompute实战

    简介:MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运 ...

  9. DataWorks数据建模公开课上线啦!

    简介:数据建模是数据标准化的核心内容,企业在搭建自己的数据平台时需要先建设适合公司业务的数据模型.好的数据模型可以帮助企业构建合理的数据基础结构,帮助企业少走弯路,节省长期开发成本. 本次阿里云Dat ...

最新文章

  1. 表单标签form、label、input、textarea、select
  2. jQuery之动画效果
  3. Java知多少(15)字符串
  4. 通过pycharm启动django
  5. 分布式服务器集群架构方案思考
  6. s5-2 Cpu调度算法
  7. mybatis的Example[Criteria]的使用
  8. Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件
  9. ArcGIS 10.2数字化线状要素时自动拼接成一条线
  10. volatile关键字解析
  11. Hadoop源代码分析(MapReduce概论)
  12. 开发者应当熟知的 C# 序列化和反序列化
  13. 如何实现一个基于HTML5的实时视频直播
  14. 计算机显卡怎样安装方法,电脑显卡怎么安装?轻松安装电脑显卡的方法
  15. 【juns项目】信用卡数据项目2-2:数据设计
  16. 循环神经网络(RNN)
  17. no vaild maven installation found
  18. 自适应模糊PID控制算法
  19. linux 门罗cli钱包操作记录
  20. 【LOJ#573】【LNR#2】单枪匹马(线段树)

热门文章

  1. 高分考生学口腔和学计算机,川内高校今年录取最高分659分 为川大口腔医学专业录取...
  2. [neovim/nvim] LSP 与代码补全配置笔记
  3. 使用shiro的会话管理和redis缓存管理来构建登录模块spring+struts+hibernate(SSH)
  4. 精品软件推荐 CCleaner中文版 好用的系统垃圾清理工具
  5. 共享自习室无人自习室源码
  6. 量化投资学习——最优成交剩撤卖
  7. 风向标瑞福进取昨发疯,真的转势了
  8. 今天,数据库“打工人”告诉你一个秘密
  9. expect ‘:‘ at 0, actual =] with root
  10. pycharm调试代码139错误的可能解决办法