• java JVM总结


    在这里插入图片描述
    在这里插入图片描述

    复制算法

    在这里插入图片描述

    标记清除

    在这里插入图片描述

    标记整理

    在这里插入图片描述

    gc root

    在这里插入图片描述

    jvm参数类型

    1.标配参数
    在这里插入图片描述

    2.x参数

    在这里插入图片描述

    3.xx参数

    Boolean类型
    公式:-XX+或者-某个属性值(+表示开启-表示关闭)
    jps
    jinfo:查看java正在运行java程序后台信息
    例查看属性是否开启:jinfo -flag PrintGCDetails {进程号}
    例是否串行垃圾回收器: -XX+ UseSerialGC
    KV设值类型
    公式:-XX:属性key=属性值value
    例:-XX:MetaspaceSize=128m
    -XX:MaxTenuringThreshold=15 (多少次交换升老年区)

    jinfo举例,如何查询当前运行程序的配置
    jinfo -flag 配置项 进程编号
    jinfo -flags 进程编号 (模糊查询当前进程编号的所有参数)

    坑题

    在这里插入图片描述

    查看初始默认

    java -XX:+PrintFlagsInitial
    查看修改和更新的内容
    java -XX:+PrintFlagsFinal (有:被修改过的)
    打印命令行参数
    java -XX:+PrintCommandLineFlags -version
    在这里插入图片描述

    最后一个参数看本次运行使用的垃圾回收器

    在这里插入图片描述

    基本调优

    -Xms 初始大小内存,默认为物理内存1/64,等价于-XX:initialHeapSize
    -Xmx 最大分配内存,默认为物理内存1/4,等价于-XX:MaxHeapSIze
    -Xss 设置单个线程栈的大小,一般默认为512k-1024k,等价于-XX:ThreadStackSize
    -Xmn 设置年轻代大小,一般不用调
    -XX:MetaspaceSize 设置元空间大小,元空间的本质和永久代类似,都是对jvm规范中方法区的实现。
    不过元空间与永久代之间最大区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。
    -XX:+PringGCDetails 打印垃圾回收日志,如下图
    在这里插入图片描述

    -XX:SurvivorRatio

    在这里插入图片描述
    在这里插入图片描述

    -XX:NewRatio

    在这里插入图片描述

    -XX:MaxTenuringThreshold 设置垃圾最大年龄

    在这里插入图片描述

    强引用

    在这里插入图片描述
    例:object2 是强引用,不会被垃圾回收
    在这里插入图片描述

    软引用

    在这里插入图片描述
    在这里插入图片描述
    内存不足:
    在这里插入图片描述

    弱引用gc后没有引用被回收。

    在这里插入图片描述
    WeakHashMap key被滞空后对应的map键值对就会被垃圾回收器回收掉
    在这里插入图片描述

    虚引用

    在这里插入图片描述
    在这里插入图片描述
    类似后置通知的虚引用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    StackOverflowError 栈空间被撑爆,最简单的例子是写一个递归方法。方法区在栈
    在这里插入图片描述

    Java heap space 堆空间被撑爆

    在这里插入图片描述
    GC overheadLimit exceeded 频繁的GC但是没有什么效果,回收不了多少就会报错。
    在这里插入图片描述
    在这里插入图片描述

    Direct buffer memory

    在这里插入图片描述
    在这里插入图片描述

    unable to create new native thread

    在这里插入图片描述
    在这里插入图片描述

    Metaspace

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    HTTP协议格式
    Web开发-登录页面设计流程
    多媒体展厅总包制作会面临的问题分析
    Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)
    啸叫检测的方法:基于DSP的实现
    [100天算法】-x 的平方根(day 61)
    深信服C++ 一面(技术面、70min、offer)
    【Linux专题】firewalld 过滤出接口流量
    STM32端口功能详情图
    Android studio run 手机或者模拟器安装失败,但是生成了debug.apk
  • 原文地址:https://blog.csdn.net/zk13120778155/article/details/133034464