尚硅谷2020最新版宋红康JVM教程-下篇-第1章:概述篇

【尚硅谷】JVM-字节码篇 官方的说明:Oracle JDK下载路径:Open JDK下载路径:Oracle与OpenJDK之间的主要区别Oracle JDK版本将每三年发布一次LTS版本,而OpenJDK版本每三个月发布一次。Oracle JDK将更多地关注稳定性,它重视更多的企业级用户,而OpenJDK经常发布以支持其他性能,这可能会导致不稳定。Oracle JDK支持长期发布的更改,而Open JDK仅支持计划和完成下一个发行版。 阅读详情

大厂面试题

支付宝:

支付宝三面:JVM 性能调优都做了什么?

小米:

有做过 JVM 内存优化吗?

从 SQL、JVM、架构、数据库四个方面讲讲优化思路

蚂蚁金服:

JVM 的编译优化

jvm 性能调优都做了什么

JVM 诊断调优工具用过哪些?

二面:jvm 怎样调优,堆内存、栈空间设置多少合适

三面:JVM 相关的分析工具使用过的有哪些?具体的性能调优步骤如何

阿里:

如何进行 JVM 调优?有哪些方法?

如何理解内存泄漏问题?有哪些情况会导致内存泄漏?如何解决?

字节跳动:

三面:JVM 如何调优、参数怎么调?

拼多多:

从 SQL、JVM、架构、数据库四个方面讲讲优化思路

京东:

JVM 诊断调优工具用过哪些?

每秒几十万并发的秒杀系统为什么会频繁发生 GC?

日均百万级交易系统如何优化 JVM?

线上生产系统 OOM 如何监控及定位与解决?

高并发系统如何基于 G1 垃圾回收器优化性能?

背景说明

  • 生产环境中的问题

    • 生产环境发生了内存溢出该如何处理?
    • 生产环境应该给服务器分配多少内存合适?
    • 如何对垃圾回收器的性能进行调优?
    • 生产环境 CPU 负载飙高该如何处理?
    • 生产环境应该给应用分配多少线程合适?
    • 不加 log,如何确定请求是否执行了某一行代码?
    • 不加 log,如何实时查看某个方法的入参与返回值?
  • 为什么要调优

    • 防止出现 OOM
    • 解决 OOM
    • 减少 Full GC 出现的频率
  • 不同阶段的考虑

    • 上线前
    • 项目运行阶段
    • 线上出现 OOM

调优概述

  • 监控的依据

    • 运行日志
    • 异常堆栈
    • GC 日志
    • 线程快照
    • 堆转储快照
  • 调优的大方向

    • 合理地编写代码
    • 充分并合理的使用硬件资源
    • 合理地进行 JVM 调优

性能优化的步骤

  • 第 1 步:性能监控

    • GC 频繁
    • cpu load 过高
    • OOM
    • 内存泄露
    • 死锁
    • 程序响应时间较长
  • 第 2 步:性能分析

    • 打印 GC 日志,通过 GCviewer 或者 http://gceasy.io 来分析异常信息
    • 灵活运用命令行工具、jstack、jmap、jinfo 等
    • dump 出堆文件,使用内存分析工具分析文件
    • 使用阿里 Arthas、jconsole、JVisualVM 来实时查看 JVM 状态
    • jstack 查看堆栈信息
  • 第 3 步:性能调优

    • 适当增加内存,根据业务背景选择垃圾回收器
    • 优化代码,控制内存使用
    • 增加机器,分散节点压力
    • 合理设置线程池线程数量
    • 使用中间件提高程序效率,比如缓存、消息队列等
    • 其他……

性能评价/测试指标

  • 停顿时间(或响应时间)

    • 提交请求和返回该请求的响应之间使用的时间,一般比较关注平均响应时间。常用操作的响应时间列表:
操作响应时间
打开一个站点几秒
数据库查询一条记录(有索引)十几毫秒
机械磁盘一次寻址定位4 毫秒
从机械磁盘顺序读取 1M 数据2 毫秒
从 SSD 磁盘顺序读取 1M 数据0.3 毫秒
从远程分布式换成 Redis 读取一个数据0.5 毫秒
从内存读取 1M 数据十几微秒
Java 程序本地方法调用几微秒
网络传输 2Kb 数据1 微秒
-  在垃圾回收环节中:
	- 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间。
	- -XX:MaxGCPauseMillis
  • 吞吐量

    • 对单位时间内完成的工作量(请求)的量度
    • 在 GC 中:运行用户代码的事件占总运行时间的比例(总运行时间:程序的运行时间+内存回收的时间)
    • 吞吐量为 1-1/(1+n),其中-XX::GCTimeRatio=n
  • 并发数

    • 同一时刻,对服务器有实际交互的请求数
  • 内存占用

    • Java 堆区所占的内存大小
  • 相互间的关系

    • 以高速公路通行状况为例

    • 吞吐量:每天通过高速公路收费站的车辆的数据

    • 并发数:高速公路上正在行驶的车辆的数目

    • 响应时间:车速

尚硅谷 宋红康老师 Java视频全程课程目录 尚硅谷 Java 语言全程课程目录, 尚硅谷 Java&大数据研究院 宋红康 B站视频链接 在此记录一下,方便日后查看复习。 Java 编程基础部分 day00_编程入门 01-资料文件结构 1 02-资料文件结构 2 03-入门概述 04-冯诺依曼体系结构 05-CPU 和 IT 行业三大定律 06-持久化存储设备 07-bit 与 byte 08-内存 09-输入输出设备和网络连接设备 10-计算机史上的两个鼻祖 11-操作系统 12-万维网与软件架构方式 13-职业发展与提升 14-学习经. 阅读详情

相关推荐

JVM从入门到精通(尚硅谷宋红康)

01-JVM内存与垃圾回收篇概述 对 Java 程序员来说,Java 虚拟机(JVM )可以说是既熟悉又神秘,很少有 Java 程序员能够抑制自己探究它的冲动。可惜透彻讲解 JVM 的书籍(尤其是国内出版的)简直少之又少,这里就更不要说能系统讲解 JVM 的视频教程了。尚硅谷的这套 JVM 从入门到精通,绝对可谓是研究 JVM 的程序员及广大 JVM 爱好者的福音。 课程内容分为四个篇章 内存与垃圾回收篇 字节码与类的加载篇 性能监控与调优篇 大厂面试篇 本套视频使用到的软件 # JDK1.8 目前企业

qq_41740883的博客 4165

尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇

执行模型字节码与数据类型指令分析iload_0占1个字节。iload 0 占3个字节。因为操作码数量有限,只有256个,所以只把常用的0-3设置成了操作码。在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)大厂面试题。

chuixue24的博客 3458

【JVM】尚硅谷宋红康JVM系列1:内存与垃圾回收篇

文章目录 b站视频地址: https://www.bilibili.com/video/BV1PJ411n7xZ/?p=2

Java 2831

尚硅谷-宋红康-JVM上中下篇完整笔记-JVM上篇_内存与垃圾回收篇

TIOBE语言热度排行榜世界上没有最好的编程语言,只有最适用于具体应用场景的编程语言。java: 跨平台的语言JVM: 跨语言的平台随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序.

chuixue24的博客 8534

02尚硅谷宋红康Java视频笔记之语言概述

Java基础是学习JavaEE、大数据、Android开发 的基石! I Java基础知识图解 Java基础课程体系 1.1 软件开发介绍 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。 人机交互方式 >图形化界面(Graphical User Interface GUl)这种方式简单直观,使用者易于接受,容易上手操作。 >命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成

yanwuxie_的博客 2734

VOWIFI--相关的协议文档

一、3GPP相关协议文档 3GPP 23.402 Architecture enhancements for non-3GPP accesse- //重要 整体框架结构和流程,3GPP和NON-3GPP切换 3GPP 36.304  User Equipment (UE) procedures in idle mode //重要,终端在空闲状态下3GPP与NON-3GPP之间的重选方法   3GP

时九博客 3578

尚硅谷JVM全套教程

不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。

七叔的博客 1万+

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5801

JVM下篇:性能监控与调优篇_01_概述篇_尚硅谷

- 生产环境发生了内存溢出该如何处理? - 生产环境应该给服务器分配多少内存合适? - 如何对垃圾回收器的性能进行调优? - 生产环境CPU负载飚高该如何处理? - 生产环境应该给应用分配多少线程合适? - 不加log,如何确定请求是否执行了某一行代码? - 不加log,如何实时查看某个方法的入参与返回值?

Java全栈开发者 459

从零开始!在 Windows 上安装与配置 Dify

这篇博客将详细介绍如何在 Windows 系统上部署 Dify,适合零基础用户。从 Docker 和 WSL 的安装配置开始,逐步指导用户设置 Git、Docker 环境以及 Dify 配置文件,解决可能遇到的端口冲突等问题,最终完成 Dify 的启动和测试。通过简明易懂的步骤,帮助用户在本地成功运行 Dify,实现模型供应商配置,让 Dify 项目在 Windows 平台上顺利上线。

qq_49035156的博客 5万+

【智能教育实践】MOOPer数据集在个性化学习路径规划中的应用

本文探讨了如何利用MOOPer数据集实现从“千人一面”到“千人千面”的个性化学习路径规划。通过分析学习者与平台的交互数据(如练习、反馈、讨论)并结合知识图谱,系统能够动态诊断学生知识状态,并为其推荐最优学习序列。文章详细介绍了基于数据驱动的推荐系统核心技术,包括知识追踪、图谱关联挖掘及排序策略,旨在解决传统在线教育的僵化问题,提升学习效率与动力。

read5的博客 230

尚硅谷2020最新版宋红康JVM教程-目录

第一篇:内存与垃圾回收篇 最新版宋红康JVM教程-1-JVM简介 尚硅谷2020最新版宋红康JVM教程-2-类加载子系统 尚硅谷2020最新版宋红康JVM教程-3-运行时数据区概述及线程 尚硅谷2020最新版宋红康JVM教程-4-程序计数器 尚硅谷2020最新版宋红康JVM教程-5-虚拟机栈 尚硅谷2020最新版宋红康JVM教程-6-本地方法接口 尚硅谷2020最新版宋红康JVM教程-7-本地方法栈 尚硅谷2020最新版宋红康JVM教程-8-堆 尚硅谷2020

admin741admin的博客 2689

matlab实现MSK调制解调

文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream

Time_book的博客 1万+

JVM学习笔记汇总:结合尚硅谷宋红康老师视频教程及PPT

JVM学习笔记汇总:结合尚硅谷宋红康老师视频教程及PPT 第一章:JVM虚拟机的介绍 1.1虚拟机的分类 虚拟机通常分为两类:系统虚拟机和程序虚机。其中,系统虚拟机是指完全对物理计算机的仿真,而程序虚拟机是指专门为执行单个计算机程序而设计的的。我们的java虚拟机就是典型的程序虚拟机。 1.2Java虚拟机的整体架构 1.3 Java代码的执行流程 1.4 Java的架构模型 java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。 具体来说,两种架构的区

qq_22993855的博客 3404

031、速度前馈与加速度前馈

摘要: 本文通过追剪机调试案例,阐述了速度前馈和加速度前馈在运动控制中的关键作用。前馈不是高级技巧,而是解决动态响应问题的必要手段:速度前馈通过预测速度变化提前补偿,加速度前馈则针对惯量变化提供力矩补偿。实现时需注意信号平滑处理,避免噪声放大。前馈与PID分工明确,前馈承担主要动态响应,PID处理残余误差。调试应先调前馈再微调PID,前馈增益需计算而非仅凭参数调整,并允许适当残余误差。前馈作为开环补偿不会影响系统稳定性,但需配合平滑的指令生成器使用。(149字)

m0_50546716的博客 278

AUTOSAR从入门到精通-汽车电子电气架构(EEA)(二)

需求的传递并非完全是瀑布式的单向传递,而是双向的,只有被下游接受了的需求才是有效的需求,而且,下游是可以反向对上游提出需求的。当街区的设计完成之后,接下来要做的就是每栋建筑的详细设计,建筑的设计者发布的图纸中规定了房屋的主要结构、所在位置与周边环境的相互关系,以及屋中各种组件的位置与相互之间结合的关系,比如砖混结构、房屋的具体位置和朝向、卧室与客厅的相对位置与尺寸、马桶在卫生间中的位置等,还会对各种建筑材料的选取原则给出具体的标准,比如水泥的标号,钢筋的型号,各种电线的等级要求等等。

getusushu的博客 372

尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇——01

目录 尚硅谷 宋红康 JVM教程 学习笔记 https://www.bilibili.com/video/BV1PJ411n7xZ P01-JVM内存与垃圾回收篇概述 09:34 P02-如何看待Java上层技术与JVM 20:17 P03-为什么要学习JVM 05:14 P04-面向人群和课程特点 10:15 P05-官方规范下载与参考书目 08:30 P06-跨平台的语言Java和跨语言的平台JVM 15:22 P07-字节码与多语言混合编程 06:25 P08

狗剩的专栏 2498

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【jvm】《尚硅谷宋红康JVM全套教程(详解java虚拟机)》上篇 笔记

是一个很小的内存空间,几乎可用忽略不记。也是运行速度最快的存储区域在jvm规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致任何时间一个线程都只有一个方法执行,也就是所谓的当前方法。程序计数器会存储当前方法正在执行的java方法的jvm指令地址;或者,如果是在执行native方法,则是未指定值(undefined)他是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。............

liangjiayy的博客 4035

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

尚硅谷-宋红康-JVM上中下篇完整笔记

尚硅谷-康师傅-jvm详细笔记,欢迎转载,放心食用。

ctflq的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

尚硅谷 宋红康 JVM教程_02_字节码与类的加载篇

目录 尚硅谷 宋红康 JVM教程 学习笔记 https://www.bilibili.com/video/BV1PJ411n7xZ ppt地址: https://download.youkuaiyun.com/download/wei198621/14040543 JVM参数列表: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html P204-JVM中篇内容概述 11:51 P205-字节码文件的跨平台性 13:12 P2

狗剩的专栏 1437

尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇——02

08 堆 P66-堆空间的概述_进程中堆的唯一性 15:28 方法区与堆,都是进程共享的,一个进程对应一个 JVM 实例 一个进程中的多个线程共享 堆及方法区, 每个线程,有一组 虚拟机栈、本地方法栈、程序计数器 Java堆区在JVM启动的时候就创建了,其空间大小就确定了。是JVM管理的最大内存空间。堆内存大小是可以调节的。 C:\developer_tools\Java\jdk1.8.0_45\bin P67-堆空间关于对象创建和和GC的概述 17:38 P68-堆的细分内存结构

狗剩的专栏 1813

尚硅谷2020最新版宋红康JVM教程学习笔记 三 堆

本地方法接口(使用的越来越少除非是与硬件有关的应用)(了解) 在java中有时需要引用一些用非java语言写的方法。这些方法需要用native来修饰。 例如 为什么要用本地方法 一:与java环境外交互 有时java应用需要与java外面的环境交互,这是本地方法存在的主要原因。例如java需要与一些底层系统,如操作系统或者某些硬件交换信息时的情况。本地方法正事这样一种交流机制,它为我们提供了一个非常简洁的接口,而且我们无需去了解java应用之外的繁琐细节。 二:与操作系统交互 虽然java程序是运行在jv

qq_30033509的博客 1149

尚硅谷宋红康JVM 第1章:JVM与Java体系结构

尚硅谷宋红康JVM笔记第1章:JVM与Java体系结构 第1章:JVM与Java体系结构 具体视频和资料请关注尚硅谷官方公众号获取 课程主要分为4部分(目前只出到第一部分) 课程大纲 package com.atguigu.java; /** * @author shkstart * @create 2020 下午 12:11 */ public class StackStruTest { public static void main(String[] ar

lpy943739901的博客 538

尚硅谷2020最新版宋红康JVM教程学习笔记 一 类加载子系统

JAVA语言是跨平台的语言,JVM虚拟机是跨语言的平台。JVM虚拟机并不关心字节码文件是由什么语言生成的。只有不同的语言通过编译器生成符合JVM虚拟机规范的字节码文件,JVM就能够运行。JAVA就是通过编译生成字节码文件,然后再在JVM上运行。因此JAVA语言可以一次编译到处运行。 虚拟机 虚拟机是一台虚拟计算机,是用来执行虚拟计算机指令的软件。虚拟机可以分为系统虚拟机和程序虚拟机。 如VMware就是系统虚拟机,他是对物理计算机的仿真。 Java虚拟机是程序虚拟机,他专门为执行单个计算机程序而设计,在ja

qq_30033509的博客 1293

Java学习笔记----第一部分:java基础编程(尚硅谷宋红康老师)

了解java的基础知识,学习java中的基本语法,学习java的面向对象和异常知识

m0_52574098的博客 9571
上一篇: 尚硅谷MySQL数据库高级-目录
下一篇: Redis6视频课程
zgcadmin
博客等级 码龄9年 174粉丝 109原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值