代码编织梦想

此文查看操作,是在windows环境下进行的

1、查看java版本

java -version

2、如果不知道java安装路径,想查看安装路径的话,可执行

java -verbose

执行上述命令后,会在最后打印出如下信息:
在这里插入图片描述
3、查看jvm使用的垃圾收集器

java  -XX:+PrintCommandLineFlags  -version

在这里插入图片描述

C:\Users\Administrator>java  -XX:+PrintCommandLineFlags  -version
-XX:InitialHeapSize=267440704 -XX:MaxHeapSize=4279051264 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)

参数说明
-XX:InitialHeapSize 初始堆大小
-XX:MaxHeapSize 最大堆大小
在这里插入图片描述
各个版本的JDK默认的垃圾回收器

jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.9 默认垃圾收集器G1

JVM-查看JVM参数:
-XX:+PrintVMOptions 程序运行时,打印虚拟机接受到的命令行显式参数
-XX:+PrintCommandLineFlags 打印传递给虚拟机的显式和隐式参数
-XX:+PrintFlagsFinal 打印所有的系统参数的值
参考:https://blog.csdn.net/weixin_45737870/article/details/108932376

如何定位垃圾

  1. 引用计数
  2. 根可达算法

典型的垃圾收集算法

  1. 标记清除 - 位置不连续 产生碎片
  2. 拷贝算法 - 没有碎片,浪费空间
  3. 标记压缩 - 没有碎片,效率偏低

详细说明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
典型的垃圾收集器:

在这里插入图片描述

在这里插入图片描述其他:

1.JVM内存分代模型(用于分代垃圾回收算法)

  1. 部分垃圾回收器使用的模型
  2. 新生代 + 老年代 + 永久代(1.7)/ 元数据区(1.8) Metaspace
    1. 永久代 元数据 - Class
    2. 永久代必须指定大小限制 ,元数据可以设置,也可以不设置,无上限(受限于物理内存)
    3. 字符串常量 1.7 - 永久代,1.8 - 堆
    4. MethodArea逻辑概念 - 永久代、元数据
  3. 新生代 = Eden + 2个suvivor区
    1. YGC回收之后,大多数的对象会被回收,活着的进入s0
    2. 再次YGC,活着的对象eden + s0 -> s1
    3. 再次YGC,eden + s1 -> s0
    4. 年龄足够 -> 老年代 (15 CMS 6)
    5. s区装不下 -> 老年代
  4. 老年代
    1. 顽固分子
    2. 老年代满了FGC Full GC
  5. GC Tuning (Generation)
    1. 尽量减少FGC
    2. MinorGC = YGC
    3. MajorGC = FGC

2.常见的垃圾回收器

  1. Serial 年轻代 串行回收
  2. PS 年轻代 并行回收
  3. ParNew 年轻代 配合CMS的并行回收
  4. SerialOld
  5. ParallelOld
  6. ConcurrentMarkSweep 老年代 并发的, 垃圾回收和应用程序同时运行,降低STW的时间(200ms)
  7. G1(10ms)
  8. ZGC (1ms) PK C++
  9. Shenandoah
  10. Eplison

1.8默认的垃圾回收:PS + ParallelOld

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41451744/article/details/125224410

面试题:jvm,gc垃圾回收机制_yelinliner的博客-爱代码爱编程_gc回收机制和原理面试

注:以下内容为jdk8之前,学习《深入理解Java虚拟机(第二版)》的关于GC的简单总结,jdk8及之后的详细学习总结已更新至博客《学习:GC垃圾回收、JVM架构、运行时数据区》 GC(垃圾收集),那收集回收的是什么呢

jvm的内存区域和垃圾回收机制_renxhui的博客-爱代码爱编程

JVM的内存区域 java 虚拟机在执行java程序的过程中,会把它管理的内存划分为若干那个内存区域,分为以下几种 程序计数器 程序计数器是一个较小的内存空间,他可以看做当前线程所执行的字节码的行号指示器,由于jav

jvm 垃圾回收机制(garbage collection)面试工作一篇就够了_晓_晨的博客-爱代码爱编程

版权声明:转载必须注明本文转自晓_晨的博客:http://blog.csdn.net/niunai112 目录 目录1.如何判定是否需要回收 引用计数算法可达性算法

【java】jvm垃圾回收机制与类加载机制_飞奔的六六的博客-爱代码爱编程

不同于C++需要编程人员手动释放内存,Java有虚拟机,因此Java不需要程序员主动去释放内存,而是通过虚拟机自身的垃圾回收器(Garbage Collector-GC)来进行对象的回收。Java语言由于有虚拟机的存在,实现了平台无关性,在任意平台都是通过将代码转换为字节码文件,从而在平台下的虚拟机中运行代码的。   JVM内存区域分布 虚拟机栈

jvm垃圾回收机制【简单介绍】-爱代码爱编程

Java虚拟机(JVM)垃圾回收机制 JVM中的垃圾回收计数是采用的一种自适应的技术(可以通过其工作方式将它“啰嗦地”称为:自适的、分代的、停止-复制、标记-清扫式垃圾回收器) 在讲Java虚拟机的自适应回收机制前,有必

JVM 垃圾回收机制、垃圾收集器、调优参数-爱代码爱编程

目录 概述标记对象是否为垃圾的算法引用计数算法可达性分析算法引用类型垃圾回收算法标记-清除算法 Mark-Sweep标记-整理算法 Mark- Compact复制算法 Coping分代收集算法堆外内存(直接内存)的回收垃圾收集器JVM的2种运行模式新生代常见的3种收集器Serial收集器ParNew收集器Parallel Scavenge收集器老年

理解JVM垃圾回收机制(GC)-爱代码爱编程

Garbage Collection(GC),Java进程在启动之后就会自动创建垃圾回收线程,来对无用的内存空间进行回收。 垃圾回收策略 当进行垃圾回收器某一个对象的时候,我们需要判断这个对象是否已经“死去”(不能被任何途径使用的对象),判断的算法有两种: 1、引用计数算法(Reference Counting) 给对象中添加一个引用计数器,当一个

JVM垃圾回收机制-爱代码爱编程

1.概述 垃圾回收,顾名思义是将弃用的对象进行回收处理,释放内存空间,防止大量无用对象占用内存空间,导致内存泄露。 2.对象存储在什么地方? 进行垃圾回收,首先要确认对象是存放在什么地方。 初学java时,你一定听过对象是存放在堆内存的。堆内存里其实也分为不同区域,堆内存分为两大块,一个是Old区,一个是Young区 Young区分为两大块,一个是S

java垃圾回收的具体时间_JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作?...-爱代码爱编程

听说微信搜索《Java鱼仔》会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)关于垃圾回收 JAVA的垃圾回收需要完成三件事情: 1、哪些内存需要回收 2、什么时候回收 3、如何回收 下面就从这三个问题出发去了解Java的垃圾回收机制。 (二)哪些垃圾需要回收 在垃圾回收之

JVM的垃圾回收机制-爱代码爱编程

目录 jvm的基本组成 虚拟机的组成 运行流程 内存分配与回收策略 引用计数器算法: 可达性分析算法: 分代收集算法: 垃圾收集器: Serial收集器 ParNew收集器 Parallel Scavenge收集器 Serial Old收集器 Parallel Old收集器 jvm的基本组成 虚拟机的组成 所谓java能

JVM-GC垃圾回收机制-爱代码爱编程

学习JVM垃圾回收机制主要学习以下几点:哪些内存需要回收(判断对象可以回收)、什么时候回收(GC什么时候执行)、怎么回收(垃圾回收算法、垃圾回收器)、垃圾回收过程。 JVM GC回收哪些区域内的垃圾? JVM GC只回收堆区和方法区内的对象,不回收虚拟机栈内的数据,栈内数据在超出作用域后会被JVM自动释放掉。 因为JVM GC回收堆区的对象,所以先了

JVM垃圾回收机制详解-爱代码爱编程

JVM垃圾回收机制详解 1. 为什么垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 2. 如何判断对象已经死亡 2.1 引用计数法 引用计数法:给每个对象维护一个引用计数器,每当该对象被应用一次,计数器就加1;当引

深入理解java虚拟机——jvm垃圾回收机制和垃圾收集器详解-爱代码爱编程

一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释放垃圾占用的空间,这一切都交给了JVM来处理。本文主要解答三个问题: 1、哪些内存需要回收?(对象是否可以被回收的两种经典算法: 引用计数法

jvm 垃圾回收机制_jvm垃圾回收机制_明明脑子不够用了的博客-爱代码爱编程

本片主要是介绍垃圾回收机制常用的标记算法和回收算法。 文章目录 垃圾标记引用计数法可达性分析 回收方法区垃圾回收标记-清除标记-复制标记-整理分代回收算法 垃圾回收器Serial收集器ParNew

springboot logback 日志混淆-爱代码爱编程

国家日益对用户敏感信息关注增加。现在如果日志中存在用户的敏感信息,如生日,身份证号、手机号、家庭地址。都需要在日志中进行混淆,不能明文输出。以防敏感信息泄露。 为了进行统一的解决方案,就想对指定的field进行混淆。 查看了一下生产环境上的log日志。 输出object的时候大概分为三种格式。 Lombok注释的ToString方法。 accoun