22-Spring_JVM-2

1.jvm参数调优

-XX: + PrintGC 

-Xms

-Xmx

-Xmn

等等一些内存配置,和日志打印

这些jvm内存有关的代码,是写在eclipse在run的时候的configuration里面

一般eden区是s0区的2倍

2.jvm参数设置的几个原则

垃圾回收次数尽可能的少

新生代内存比老年代小

在生产环境一般情况下:新生代 : 老年代 = 1 : 2

eden区 : s0区 = 8 : 1 : 1

jvm的调优,主要就是针对在堆内存的调优

在实际项目中jvm的内存调优设置,一般都是在tomcat,这里eclipse是做测试用

3.内存溢出 & 内存泄露

内存溢出,指的就是,你的使用的obj阿等没有足够大的内存来使用,这样内存不够obj溢出了

而内存泄露指的是,明明已经是null的obj或者已经是不再使用的obj,但是没有被回收,这样就导致了内存泄露,:有一部分内存明明是可以被回收的,但是没有回收,反而占用了内存,可能最终会导致内存溢出

4.栈溢出

当使用递归的时候,在栈内存里面有一个叫做深度的概念,一定的内存容量对应一个深度,2者正相关,如果内存小,深度低

那么,递归循环的次数也就少

循环遍历则不会,只有递归的时候才会栈溢出

5.并行回收 & 串行回收

串行回收是单线程的,并行回收是多线程的

高并发的大项目都是用的并行回收

到时候学事务,spring,会讲到吞吐量,qbs,一个后台搭建好以后,肯定是要测的.......

6.收集器:具体回收垃圾的一个功能器

常见的串行收集器:serial收集器

常见的并行收集器:parallel收集器

CMS收集器,响应时间优先,减少垃圾回收的停顿时间,很多大型服务器都使用的CMS

G1收集器:目前用的最多的收集器

并行:多处理器处理多任务

并发:单处理器处理多任务

7.Jmeter

使用Jmeter来测试一下服务器的性能测试

同样的设计到的软件还有LoadRunner,Badboy类似的这种

8.插话

之前的后台项目在搭建完以后,肯定是要进行吞吐量测试,稳定测试,这个测试其实很简单,机器自动测试就行了的,还有那么多种软件,但是...之前的项目我估计没有测试...以后只要是后台搭建的项目,必然是要测试一下,才可以优化吞吐量qps等,知道如何改进,优化,有bug也可以及时的找出来

9.防止模拟请求(爬虫)

有一些框架Nginx会自带有防止的,还有就是token验证,企业级白名单

10.实际测试:

          1.串行回收  

          2.并行回收

          3.CMS回收

          4.G1回收

以上的所有测试细节,不再赘述,直接讲结.

调优结论:

              初始值必须要跟最大值一致

              初始堆值越高,吞吐量就越高.

              吞吐量和堆最大的内存无关,当然,在初始值与最大值一致的情况下,肯定是最大值越搞吞吐量越大

              CMS回收,吞吐量大于上述并行回收

              真正的测试一定要把项目挂载在linux服务器上再测

              最后使用并行收集器,跟串行比较,速度快,吞吐量高

              设置堆内存新生代和老年代的比最好是 --> 1:2 或者 1:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值