zoukankan      html  css  js  c++  java
  • [JVM教程与调优] 为什么要学习JVM虚拟机?

    为什么要学习JVM虚拟机

    JVM在我们开发阶段不会用到,但是到了生产环境中,那么就会变得非常重要了。
    为什么这么说呢?
    一方面,因为我们的生产环境是比较复杂的。各种可能的问题都会出现,比如说:硬盘坏了、网络坏了、CPU利用率高了等问题层次不穷。
    另外一方面,在我们生产环境出现问题,还不好进行定位。因为没法随便对我们的生产环境进行重启,没法随便对我们的生产环境
    的代码进行修改,没法随便对我们的生产环境进行日志的添加。所以说对生产环境进行监控是非常有必要的。
    这次我们不会去讲解基于硬件的监控,主要讲解对Java应用的性能做监控和调优。
    相信很多小伙伴,之前或多或少有一些了解,只是说没有系统的学习过原理,并没有真正的上手实践过。
    我们这次就带着小伙伴们一起来学习JVM的性能调优。

    面试会遇到哪些问题?

    • 生产环境发生了内存溢出该如何处理?
    • 生产环境给服务器分配多少内存合适?
    • 如何对垃圾收集器的性能进行调优?
    • 生产环境CPU负载飙高该如何处理?
    • 生产环境应该给应用分配多少线程合适?
    • 不加log如何确定请求是否执行了某一行代码?
    • 不加log如何实时查看某个方法的入参与返回值?
    • JVM的字节码是什么东西?
    • 循环体中做字符串+拼接为什么效率低?
    • 字符串+拼接一定就是StringBuilder.append吗?
    • String常量池是咋回事?
    • i++与++i到底哪种写法效率更高?

    通过对JVM的学习你能收获什么呢?

    • 熟练使用各种监控和调试工具
    • 从容应对生产环境中遇到的各种调试和性能问题
    • 熟悉JVM的字节码指令
    • 深入理解JVM的自动内存回收机制,学会GC调优
    • 从容应对面试中关于性能调优和调试的问题
    • 独当一面走向高级工程师很重要的一步

    适合人群

    1.如果你还不熟悉Java应用监控调优
    2.如果你对Java应用监控调优感兴趣
    3.如果你想跳槽面试高级工程师

    会学到哪些内容?

    • 基于JDK命令行工具的监控
    • 基于JVisualVM的可视化监控
    • 基于Btrace的监控调试
    • Tomcat性能监控与调优
    • Nginx性能监控与调优
    • JVM层GC调优
    • Java代码层调优

    基于JDK命令行工具的监控

    • JVM参数类型
    • 查看运行时JVM参数
    • 查看JVM统计信息
    • jmap+MAT实战内存溢出(一定要学会)
    • jstack实战死循环与死锁(CPU高了,可以看的非常清楚)

    基于JVisualVM的可视化监控

    • 监控本地Java进程
    • 监控远程Java进程

    基于Btrace的监控调试

    • Btrace安装使用入门
    • Btrace使用详解

    涉及到非常多的高级知识

    Tomcat性能监控与调优

    • Tomcat远程debug
    • Tomcat-manager监控Tomcat
    • psi-probe监控Tomcat
    • Tomcat调优

    Nginx性能监控与调优

    • ngx_http_stub_status监控连接信息
    • ngxtop监控请求信息
    • nginx-rrd图形化监控
    • nginx调优

    这次并不详细介绍nginx,主要讲解一些nginx中的一些调优方法。

    JVM层GC调优

    • JVM内存结构
    • 垃圾回收算法
    • 垃圾收集器
    • GC日志格式与可视化日志分析工具
    • Tomcat的GC调优实战

    基于JDK1.8

    Java代码层调优

    • JVM字节码指令与javap
    • i++与++i,字符串+拼接原理
    • 常用代码优化方法
    • 不止这些...

    javap可以打印java中的字节码,了解java的执行过程。

    相信许多小伙伴都或多或少了解过上述知识,但是并不是每一个小伙伴都能够理解。这次就带着大家来一起学习!

    推荐

    文末

    文章收录至
    Github: https://github.com/CoderMerlin/coder-programming
    Gitee: https://gitee.com/573059382/coder-programming
    欢迎关注并star~

    微信公众号

  • 相关阅读:
    创建型模式
    创建、修改、删除表总结
    分页式存储管理及地址转换(网易笔试题)
    二进制、十进制、十六进制相互转换
    转 String,StringBuffer与StringBuilder的区别??
    IDEA 修改某个Module名称
    IDEA Git 修改后的文件无法Commit
    git git push某一次的commit记录
    git merge 结果是 git merge Already up-to-date. 该怎么解决?
    火币网API文档——REST 行情、交易API简介
  • 原文地址:https://www.cnblogs.com/coder-programming/p/12595154.html
Copyright © 2011-2022 走看看