案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?

第2周作业:

看看你们的线上系统是如何设置JVM内存大小的?

本周咱们已经把JVM的工作原理进一步的加深了理解,现在相信大家都知道咱们写好的系统平时运行的时候,都是优先把对象放新生代里,然后新生代满了就垃圾回收

如果有的长期存活的对象,躲过十多次垃圾回收,就进入老年代。

而且我们还结合案例分析了,一个新的系统上线之前,应该怎么去根据系统的线上负载,预估内存使用的压力,然后结合内存使用压力选择合理的机器配置以及JVM堆内存大小。

同时还给了一个反例,如果不合理设置内存,会导致什么样的问题。

那么本周的作业是什么呢?

非常简单,希望每个人按照案例里分析的那个过程,把你手头负责的系统的核心业务流程简化、抽象以及梳理出来,看看你们线上的真实负载情况,每秒钟多少请求?

然后根据你们的核心业务流程,看看每秒钟你负责的系统对内存使用的压力有多大?

假如你发现自己负责的系统很Low,没什么压力,那你可以尝试思考一下,如果你系统负载扩大100倍呢?此时对你内存使用压力有多大?

接着你再思考一下,就你的系统内存使用压力之下,目前你们线上机器是多大的堆内存?新生代多大?老年代多大?

如果没设置,可以自行百度默认的内存大小。然后分析一下,目前的这个内存配置,你们的垃圾回收有多频繁?

希望大家对自己手头的系统,严格的去分析一下,这个流程做下来,相信你对JVM的理解,对你负责的系统的理解,对线上系统的内存分配,都会提升一个理解的层次。

发表评论

后才能评论

评论(1)