1.什么是jvm
jvm就是lava虚拟机,他是java运行环境的一部分,它虚构出来的一台计算机,在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序,有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统
2.我们调优从哪个方面出发
根据项目需求进行JVM规划和预调优
优化运行程序中JVM导致的卡顿现象
解决JVM允许过程中出现的各种问题(内存溢出等)
3.一般怎么发现jvm出现问题需要调优?
目前都是使用的阿里的arthas ,这是一款,它不仅仅可以查看新生代、老年代内存的使用情况,还可以精准定位到线程的异常。
首先是 预调优 ,根据机器 的性能,设置堆、新生代等的大小
其次在运行的时候:
假设现在有如图的情况,一般来说我们大部分的对象在一两秒后都会变成垃圾,但是由于我们的s0区太小了,很容易就会在伊甸园区的对象移动到s0时 触发了动态年龄判断,直接移动到老年代,此时每十几秒就有60M的对象移动到老年代,那么我们几分钟就会进行一次fullgc了,会造成我们的卡顿。
解决办法就是调整相应的比例,将s0区的内存调大。