总结一下项目上线之后出现问题怎么排错
一下几种问题出现的比较多,其他的问题也会有 不过我不知道
- 进程退出
- OutofMemory
- CPU占用高
一 Java进程被kill
可以jps查看一下进程是否退出
进程退出有很多原因
二 oom
程序运行过程中 ,如果需要的内存超过了jvm分配的内存就会出现这个问题
JVM内存模型
可以搜一个JVM内存模型图
jvm分非堆内存(主要是程序启动就加载的类所存放的空间)、堆内存(这些是存放写程序时候创建对象的空间)、栈内存(线程占用的内存,可以规定每个线程占用多少内存)、堆外内存(类似C语言自己申请的内存,需要自己释放,不被gc管理),4个相加就是程序运行的最小内存
如果程序运行期间超过这个就会出现oom
堆内存分edan、survior、older ,老年代会根据回收机制发生GC
堆内存不够用的时候会经常发生GC
list map存在堆内存
如果使用很大的map可能会发生fullGC,如果是oom问题的话可以检查一下是不是使用了存很多数据的map。
三 cup过高
使用命令查看cpu使用情况 会显示us和sy
us高的情况主要有:
死循环的时候就会占用很高的cpu;
程序逻辑循环过多 复杂度过高;
出现FullGC。
sy高
io操作过多解决方法有:
可以使用缓存
异步io