生产环境发生了溢出如何处理
生产hprof文件,用mat等工具分析是否发生内存泄漏
在没发生溢出时可以通过jmap把内存映像打印出来,可以通过多次分析定位问题
生产环境应该给服务器分配多少内存合适
可以通过jstack可以查看每隔一段时间内存发生的变化,应用稳定后,可以看到每块内存的占用情况,jvisualvm,tomcat-manger等
如何对垃圾收集器的性能调优
不同垃圾收集器有不同的调优策略,串行,并行,并发(CMS、G1)
重要衡量指标:吞吐量、最大停顿时间
调优目标:保证吞吐量的时候,降低最大停顿时间
生产环境CPU负载飚高如何处理
死循环、IO等待(wait)
用jstack可以jvm中所有的线程,使用top命令可以找到cpu飚高的线程id,可以看到cpu飚高的线程在做什么操作,判断是否线程不够,还是线程发生等待,还是死循环……
生产环境应该给应用分配多少线程合适
用jstack观察线程状态,假如给应用分配100个线程,100个线程全是runnable,说明线程不够,需要加服务器,如果是10个runable,80是wait,说明有等待的情况,可能需要异步的操作来提高应用的性能……通过分析线程的状态,来确定分配多少个线程合适
不加log如何确定请求是否执行了某一行代码
Btrace
不加log如何实时查看某个方法的入参与返回值
Btrace
JVM字节码是什么东西
用javap将class文件打印出相应的字节码指令,基于栈的架构
循环体中做字符串+拼接为什么效率低
因为每次都要new stringBuilder对象进行append
字符串+拼接一定是StringBuilder.append吗
Constant Variable(带final的String)
.intern()(String的字面常量)