-XX:SurvivorRatio:Eden 区与 Survivor 区大小的比值,如果设置为8,两个 Survivor 区与一个Eden区的比值为2:8,一个Survivor区占整个新生代的十分之一。
程序运行过程中执行两种任务,分别是执行业务代码和进行垃圾回收,吞吐量大意就是说程序运行业务代码的时间越多程序的吞吐量就越高,其计算公式 ,吞吐量 = CPU在用户应用程序运行的时间 / ,一般而言GC 的吞吐量不能低于 95%。
在target目录下【java -jar -Xloggc:gc.log -Xmx35m -Xms35m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps demo-test.jar】启动jar包或者直接在idea中添加【-Xloggc:gc.log -Xmx35m -Xms35m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps】启动springboot启动类,以下用gcviewner监控JVM :gcviwner。由中图可知最大停顿时间比较大,达到了892ms,一般可调优到几十毫秒级别;
使用这个技术,一般来说我们前台会以分页方式来显现数据,Mysql 用的是 OFFSET,SQL Server 用的是 FETCH NEXT,这种 Fetch 的方式其实并不好是线性复杂度,所以,如果我们能够知道 order by 字段的第二页的起始值,我们就可以在 where 语句里直接使用>= 的表达式来 select,这种技术叫 seek,而不是 fetch,seek 的性能比 fetch 要高很多。