Day356,Javaweb常见面试题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w02gzmAw-1628692291105)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810214617520.png)]


二、jps:查看正在运行的Java进程


ps -ef|grep java

1、基本情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZKhS6qr-1628692291107)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810214948936.png)]


2、测试

根据基本语法进行测试即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hhn6S0dp-1628692291108)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810215141220.png)]


3、基本语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6EpV60U-1628692291109)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212518066.png)]

可以通过jps -help来查看对应的参数信息


①options参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i3Z1gGKs-1628692291111)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810215753659.png)]

综合使用

jps -l -m等价于jps -lm

如何将信息输出到同级文件中

语法:命令 > 文件名称

例如:jps -l > a.txt


②hostid参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7DMm4gw-1628692291112)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212643954.png)]


三、jstat:查看JVM统计信息


1、基本情况

通过命令行的方式,纯文本的方式去监视整个内存JVM的占用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxSUnGWD-1628692291114)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212711406.png)]


2、基本语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1BFmO3T9-1628692291114)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212723589.png)]

其中vmid是进程id号,也就是jps之后看到的前面的号码,如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kVPJsyY-1628692291115)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212736930.png)]


①option参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZtfKBw8F-1628692291116)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221958079.png)]

  • 打印编译所花费的时间次数等信息:↓

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pftf6KZl-1628692291118)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810222110208.png)]

  • 打印被jit编译器编译过的方法:↓

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ar0XBwVl-1628692291121)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810222151397.png)]


1、-class举例

简单使用:↓

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNcdznWA-1628692291124)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221245300.png)]

jstat -class -t -h3 13344 1000 10

h3 中的3代表每隔3个分隔一次,

13344 代表类的进程id,

1000 代表每隔1000毫秒打印一次,

10 代表一共打印10次,

如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krA1pAKe-1628692291125)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810212830510.png)]

Timestamp代表:程序至今的运行时间,单位为秒;

Loaded代表:加载的类的数目;

Bytes代表:加载的类的总字节数;

Unloaded代表:卸载的类的数目;

Bytes代表:卸载的类的总字节数;

Time代表:类装载所消耗的时间;


2、-gc举例

jstat -gc 13344

13344代表类的进程id,执行结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iFKMVMFE-1628692291125)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810222644294.png)]

S0C:代表幸存者0区的总容量,

S1C:代表幸存者1区的总容量,

S0U:代表幸存者0区使用的容量,

S1U:代表幸存者1区使用的容量,

EC:代表伊甸园区的总容量,

EU:代表伊甸园区使用的总容量,

OC:代表老年代的总容量,

OU:代表老年代已经使用的容量,

MC:代表方法区的总容量,

MU:代表方法区的总容量,

CCSC:代表压缩类的总容量,

CCSU:代表压缩类使用的容量,

YGC:代表年轻代垃圾回收的次数,

YGCT:年轻代进行垃圾回收需要的时间,

FGC:代表代表Full GC的次数,

FGCT:代表Full GC的时间,

GCT:代表垃圾回收的总时间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibmL4avM-1628692291127)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810213130007.png)]


3、-gccapacity举例

jstat -gccapacity 13344

13344代表类的进程id,执行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CiYrq3fK-1628692291128)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810223642786.png)]

其中S0C代表幸存者0区的容量,S1C代表幸存者1区的容量,EC代表伊甸园区的容量,CCSC代表压缩类的容量,YGC代表年轻代垃圾回收的时间,FGC代表Full GC垃圾回收的时间


4、-gcutil举例

查看堆内存空间占比情况

jstat -gcutil 13344

13152代表类的进程id,执行结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bEGoIzw4-1628692291129)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810223614750.png)]

以上是各区域占比以及垃圾回收的情况,S0代表幸存者0区,S1代表幸存者1区,E代表伊甸园区,O代表老年代,M代表方法区,CCS代表压缩类,以上这些值都是占比情况,YGC代表年轻代垃圾回收的次数,YGCT年轻代进行垃圾回收需要的时间,FGC代表代表Full GC的次数,FGCT代表Full GC的时间,GCT代表垃圾回收的总时间


5、-gccause举例

发生GC的原因

jstat -gccause 13344

13344代表类的进程id,执行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LlPS36AD-1628692291130)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810223702702.png)]

以上是各区域占比以及垃圾回收的情况,还有触发垃圾回收的原因解释,S0代表幸存者0区,S1代表幸存者1区,E代表伊甸园区,O代表老年代,M代表方法区,CCS代表压缩类,以上这些值都是占比情况,YGC代表年轻代垃圾回收的次数,YGCT年轻代进行垃圾回收需要的时间,FGC代表代表Full GC的次数,FGCT代表Full GC的时间,GCT代表垃圾回收的总时间,LGCC和GCC代表垃圾回收的原因


②interval参数

用于指定输出统计数据的周期,单位为毫秒。即:查询间隔,每个多少时间查询一次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-McLK2XJR-1628692291131)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221444377.png)]


③count参数

用于指定查询的总次数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgkcGsZO-1628692291132)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221601375.png)]


④-t参数

可以在输出信息前加上一个Timestamp列,显示程序的运行时间。单位:秒

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ngThPUnh-1628692291133)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221710554.png)]

经验:↓

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhKpFvqq-1628692291134)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810213242464.png)]

执行jstat -gc -t 13152 1000 10,这代表1秒打印出1行,一共10行,-t代表打印出Timestamp总运行时间,结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scgZmV4R-1628692291134)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810213304004.png)]

上方红色框框中代表Timestamp,而蓝色框框中代表垃圾回收时间,单位都是秒,如果让红色框框中的某两个值相减,假设这个值是num1,然后让对应行的蓝色框框中的另外两个值相减,假设这个值是num2,之后让num2/num1,得出的差值就是上述所说的GC时间占运行时间的比例

虽然这种方式比较繁琐,但是在项目部署之后就需要使用命令行去看了,就没有可视化界面了,所以这种方式也要会


左侧的是通过-t,知道程序执行的时间,两段可以相减算出这段时间内右侧GC时间相减获得这段时间的GC时间,右侧除以左侧,就可以算出垃圾回收时间占这段程序执行时间的比例,如果比例超过20%,就表明堆的压力比较大了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpnBv1p2-1628692291135)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810224145582.png)]


⑤-h参数

可以在周期性数据输出时,输出多少行数据后输出一个表头信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJgqol7N-1628692291136)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210810221900741.png)]


3、补充

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGSRpZGZ-1628692291137)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810224622663.png)]

第1步可以执行命令:jstat -gc -t 14024 1000 10

一段时间内抽取OU中的最小值,进行比较,如果发现不断上涨,就出现内存泄露

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SjeF8rk6-1628692291138)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210810224632940.png)]


四、jinfo:实时查看和修改JVM配置参数


主要用来获取某一个参数的值,修改比较少

1、基本情况

Bean对象get/set()

在这里插入图片描述


2、基本语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-afSzPSIO-1628692291142)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811202601022.png)]


①查看
  • jinfo -sysprops 进程id

可以查看由System.getProperties()取得的参数

进程id可以通过jps命令查看,操作结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NlP80hXo-1628692291143)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811204433155.png)]


  • jinfo -flags 进程id

查看当前进程曾经赋过值的一些参数情况

进程id可以通过jps命令查看,参数赋值的一部分是我们自己设置的,另外一部分是系统自动优化设置的参数信息,具体操作如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofTWThYv-1628692291144)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811204615614.png)]


  • jinfo -flag 参数名称 进程id

查看某个java进程的具体参数的信息

进程id可以通过jps命令查看

在这里插入图片描述


②修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dva8lGZq-1628692291149)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811205046187.png)]


  • 针对boolean类型

jinfo -flag [+|-]参数名称 进程id

PID可以通过jps命令查看,如果使用+号,那就可以让该参数起作用,否则使用-号就让该参数不起作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vqvPEVdx-1628692291150)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811205316587.png)]


  • 针对非boolean类型

jinfo -flag 参数名称=参数值 进程id

PID可以通过jps命令查看,如果使用+号,那就可以让该参数起作用,否则使用-号就让该参数不起作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nxIKgudr-1628692291151)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811205457388.png)]


3、拓展

①java -XX:+PrintFlagsInitial

查看所有JVM参数启动的初始值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5rX8lApm-1628692291152)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210811205805539.png)]


②java -XX:+PrintFlagsFinal

查看所有JVM参数的最终值

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

image

高效学习视频

术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Lu76eOhP-1711932050077)]
[外链图片转存中…(img-2z4fgc80-1711932050077)]
[外链图片转存中…(img-jtLLADqg-1711932050078)]
[外链图片转存中…(img-oZQMIScC-1711932050078)]
[外链图片转存中…(img-ugZy86kl-1711932050078)]
[外链图片转存中…(img-7jFkDIGq-1711932050078)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-5FI4N5S6-1711932050079)]

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

[外链图片转存中…(img-SFW27Lho-1711932050079)]

高效学习视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值