内存(memory),又叫主存,是cpu与其他设备沟通的桥梁,主要用来临时存放数据,配合cpu工作,协调cpu的处理速度

堆内存:

| 参数 | 含义 |
|---|---|
| -Xms | 初始堆大小 |
| -Xmx | 最大堆空间 |
| -Xmn | 设置新生代大小 |
| -XX:SurivivorRatio | 新生代eden空间,from空间,to空间的比例关系(8:1:1) |
| -XX:PermSize | 方法区初始大小 |
| -XX:MaxPermSize | 方法区最大值 |
| -XX:metaspaceSize | 元空间GC阈值 |
| -XX:MaxMetaspaceSize | 最大元空间大小 |
| -Xss | 栈大小 |
| -XX:MaxDirectMemorySize | 直接内存大小,默认为最大堆空间 |

Mem:物理内存
swap:交换分区

VIRT:虚拟内存使用量 VIRT=SWAP+RES
RES:物理内存使用量+未换出的虚拟内存大小 RES=CODE+DATA
SHR:共享内存的使用量
SWAP:虚拟内存中被换出的大小
CODE:代码占用的物理内存大小
DATA:代码之外的部分占用的物理内存大小
%MEM:使用的物理内存占总内存的比率

jmap [options] pid-dump :生成java堆栈的快照信息-heap :显示java堆详细信息,使用哪种回收机制,参数配置,分代情况 -histo :显示堆中对象统计信息,包括类,实例数量jmap -F -dump:live,format=b,file=xxx .bin pid看请求的响应信息, 一般的情况下,出现内存溢出问题,在响应信息中都会有所体现nested exception is java.lang.OutOfMemoryError: Java heap space

有些项目,在log日志中,会有体现(不一定有)
我们看系统的内存
ps -ef |grep java jpsjmap -dump:live,format=b,file=heap_xxxtest_20210811002.hprof 2419
curl -O https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jarjava -jar arthas-boot.jar --help



-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCtimestamps -XX:+PrintGCApplicationStopedTime (包含IO操作,所以生产环境一般不添加,测试环境也只有定位问题才开启,否则损耗性能)jconsole.sh pidjstat -gcutil pid 10000 间隔1w毫秒显示一次gc信息
总结一下:
cpu相关问题,应用服务器中高频率出现
内存: 工作中经常遇到,比较难
网络:见的多,但是不是最难,只是因为大家网络知识跟不上
磁盘问题: 相对来说问题是最少, 一般集中在文件服务器\数据服务器