案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?
第2周作业:
看看你们的线上系统是如何设置JVM内存大小的?
本周咱们已经把JVM的工作原理进一步的加深了理解,现在相信大家都知道咱们写好的系统平时运行的时候,都是优先把对象放新生代里,然后新生代满了就垃圾回收
如果有的长期存活的对象,躲过十多次垃圾回收,就进入老年代。
而且我们还结合案例分析了,一个新的系统上线之前,应该怎么去根据系统的线上负载,预估内存使用的压力,然后结合内存使用压力选择合理的机器配置以及JVM堆内存大小。
同时还给了一个反例,如果不合理设置内存,会导致什么样的问题。
那么本周的作业是什么呢?
非常简单,希望每个人按照案例里分析的那个过程,把你手头负责的系统的核心业务流程简化、抽象以及梳理出来,看看你们线上的真实负载情况,每秒钟多少请求?
然后根据你们的核心业务流程,看看每秒钟你负责的系统对内存使用的压力有多大?
假如你发现自己负责的系统很Low,没什么压力,那你可以尝试思考一下,如果你系统负载扩大100倍呢?此时对你内存使用压力有多大?
接着你再思考一下,就你的系统内存使用压力之下,目前你们线上机器是多大的堆内存?新生代多大?老年代多大?
如果没设置,可以自行百度默认的内存大小。然后分析一下,目前的这个内存配置,你们的垃圾回收有多频繁?
希望大家对自己手头的系统,严格的去分析一下,这个流程做下来,相信你对JVM的理解,对你负责的系统的理解,对线上系统的内存分配,都会提升一个理解的层次。
评论(1)
idea输入中文卡 和jvm内存有没有关系呢?