面试题——垃圾回收器、Linux性能、Git命令

垃圾回收器

目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集。

4中主要垃圾收集器:

在这里插入图片描述

查看默认垃圾收集器:

java -XX:+PrintCommandLineFlags -version

== Java的提供的垃圾回收器:==

UseSerilGC
UseParallelGC
UseConcMarkSweepGC
UseParNewGC
UseParallelOldGC
UseG1GC

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

GC约定参数:

DefNew  (Default New Generation) 默认新生代收集器
Tenured (Old) 老年代
ParNew (ParallelNewGeneration) 新生代并行回收
PSYoungGen (Parallel Scavenge) 新生代使用PS
ParOldGen (Parallel Old Generation) 老年代使用PS old
Linux性能查看命令

整机:top
在这里插入图片描述

uptime:系统性能命令的精简版
在这里插入图片描述
CPU:vmstat

vmstat -n 2 3
查看CPU,2秒一次,刷新3次

在这里插入图片描述

  • procs
    • r:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大。
    • b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等。
  • cpu
    • us:用户进程消耗CPU的时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,则需要优化程序。
    • sy:内核进程的消耗CPU时间的百分比
    • us+sy:参考值为80%,如果us+sy大于80%,说明可能存在CPU不足。
    • id:处于空闲的CPU百分比
    • wa:系统等待IO的CPU时间百分比
    • st:来自一个虚拟机偷取的CPU时间的百分比

查看所以有CPU核信息:
mpstat -P ALL 2 2秒刷一次
在这里插入图片描述

每个进程使用CPU的用量分解信息:
pidstat -u 1 -p 进程编号
在这里插入图片描述
内存:free

free 查看内存
free -g 以G为单位
free -m 以M为单位

应用程序可用内存/系统物理内存 > 70%:内存充足
应用程序可用内存/系统物理内存 < 20%:内存不足
在这里插入图片描述
在这里插入图片描述

查看指定进程消耗的内存:
pidstat -p 进程号 -r 采样间隔秒数
在这里插入图片描述
硬盘:df

df 
df -h 人性化显示

在这里插入图片描述

磁盘IO:iostat

iostat -xdk 2 3 

在这里插入图片描述
rkB/s 每秒读取数据量kb;
wkB/s 每秒写入数据量kb;
svctm I/O请求的平均服务时间,单位毫秒

查看指定进程磁盘IO:
pidstat -d 采样间隔秒数 -p 进程号
在这里插入图片描述
网络IO:ifstat
在这里插入图片描述

CPU占比过高的定位分析思路
  1. 先用top命令找出CPU占比最高的

  2. 使用ps -ef 或者jps进一步定位,得知是怎样的一个后台程序出问题

  3. 定位到具体线程或代码
    ps -mp 进程编号 -o THREAD,tid,time
    在这里插入图片描述
    -m 显示所有线程
    -p pid进程使用cpu的时间
    -o 该参数后是用户自定义格式

  4. 将需要的线程ID转换为16进制格式(英文小写格式)
    printf "%x\n" 有问题的线程ID

  5. jstack 进程ID | grep tid(16进制英文小写格式) -A60

-A60:前60行

在这里插入图片描述

Git

Git常用词:

  • watch:会持续收到该项目的动态
  • fork:赋值某而过项目到自己的GitHub仓库
  • star:点赞
  • clone:将项目下载到本地
  • follow:关注感兴趣的作者,会收到他们的动态

in关键词限制搜索范围:

公式:xxx关键词 in:name或description或readme

xxx in:name 项目名包含xxx的
xxx in:description 项目描述包含xxx的
xxx in:readme 项目的readme文件中包含xxx的

组合使用:seckill in:name,readme

在这里插入图片描述

stars或fork数量关键词去查找:

公式:

xxx关键词 stars 通配符   :> 或者 :>=
区间范围数字   数字1..数字2


查找stars数大于等于5000的springboot项目
springboot stars:>=5000

查找forks数大于500的springcloud项目
springcloud forks:>500

组合使用:
查找fork在100200之间并且stars数在80100之间的springboot项目
springboot forks:100..200 stars:80..100

awesome加强搜索:
一般是用来收集学习、工具、书籍类相关的项目

公式:awesome 关键字

高亮显示某一行代码:
公式:

1行 地址后面紧跟#L行号

多行 地址后面紧跟#L数字-L数字2

项目内搜索:
公式:快捷键小写t
在这里插入图片描述

搜索区域内活跃用户:

北京地区的java方向的用户
location:beijing language:java
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值