摘要:
在并发程序中,关于线程数设置大小的说法: 线程数量设置太小,可能会导致程序不能充分利用好系统资源。 线程数量设置太大,可能会带来资源的过度竞争,导致上下文切换给系统带来额外的开销。 何为上下文切换? 在单核CPU时代,操作系统其实就已经能处理多线程并发任务了。处理器会给每个线程分配一个CPU时间片, 阅读全文
摘要:
本文总结了排查内存溢出问题的MAT工具,先来看看本文目录: 给,你们想要的内存溢出 MAT 排查工具 Java 堆内存分析工具。 1@RestController 2public class MatController { 3 4 List list = new ArrayList<>(); 5 6 阅读全文
摘要:
在工作中,当一个系统发生OOM的时候,这种问题可能会让大家很烦恼困惑,因为故障排查起来是一个综合技术的考量。在平时工作中要增加自己的知识广度,多学习,多总结,多思考,多做笔记,这才是真正的王道。 尤其是在线上环境中,如何分析是哪个线程导致的CPU飙高的问题,通常大致有几个差不多固定的步骤。这个问题也 阅读全文
摘要:
有关JVM问题排查的可视化工具有很多,比如说JDK自带的jconsole、jvsualvm等,第三方有MAT、GChisto、GCView等。 小学妹问我:如何利用可视化工具排查问题? jconsole查看内存回收情况 jconsole工具在JDK的bin目录下。 小学妹问我:如何利用可视化工具排查 阅读全文
摘要:
前面已经讲过了jps和jstat调优工具。今天我们继续说一下其它4个工具。这些工具都在jdk的bin目录下。 如何使用jinfo工具 jinfo显示虚拟机配置信息,我们通过jinfo --help能看到相应的参数: option说明 no option 输出全部的参数和系统属性 -flag name 阅读全文
摘要:
内存溢出,通俗的理解,就是你要求分配的内存超出了JVM能给你的,JVM不能满足需求,于是产生溢出。 为了便于理解,本文我们将使用一个案例来说明内存溢出。 首先,还是先看看本文的主要框架: 查看JVM内存情况 1public class PrintGCDetailsDemo { 2 public st 阅读全文
摘要:
前言 前面我们讲过Spring Boot集成JPA,但是由于很多小伙伴的项目中用的并不是JPA,用的是Mybatis,并且我也调查过很多朋友,三个ORM框架使用比例大致为 Mybatis:JPA:Hibernate:其他=6:3:0.5:0.5 不接受反驳,因为没有多大意义。 面试题:Mybatis 阅读全文
摘要:
首先,还是一张思维导图,看看本文主要内容: 今天来熟悉一下,关于JVM调优常用的一些参数。 X或者XX开头的都是非转标准化参数 意思就是说准表化参数不会变,非标准化参数可能在每个JDK版本中有所变化,但是就目前来看X开头的非标准化的参数改变的也是非常少。 格式:-XX:[+- 阅读全文
摘要:
在JVM中程序寄存器、Java虚拟机栈、本地方法栈,这三个区是随着线程的创建而创建,随着线程结束而销毁。 其实就是这三个地生命周期和线程的生命周期一样。都是每个线程私有的。 每次方法的调用就会向栈里入栈一个栈帧,方法调用结束,跟着就出栈。 对象也是有生命周期的,所以对于不需要的对象要进行必要 阅读全文
摘要:
前面的文章中已经有所提到过堆,只是大致介绍了一下。本文就来详细聊聊JVM中的堆。 在 JVM中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。 新生代 ( Young ) 又被划分为三个区域:Eden区、From Survivor区、To Survivor区。 这样划 阅读全文