写点什么

第九周 - 性能优化 -JVM 及秒杀

用户头像
WulalaOlala
关注
发布于: 2020 年 08 月 02 日



问题一:JVM

问:请简述 JVM 垃圾回收原理。

答:

1、什么是JVM垃圾:一个对象没有对象的引用,也就是无法使用到的对象就是垃圾对象;

2、如何定位垃圾:

a、直观计数法:统计每个对象的引用数,若计数为0则为垃圾;存在问题:循环引用问题

b、可达性分析:根据gcroots遍历可达对象,不可达的则为垃圾;gcroots一般为内存栈对象或者静态区对象;

3、怎么回收垃圾:

a、清理:直接把垃圾对象置空间为可覆盖使用的空间;存在问题:内存不连续,内存碎片

b、清理压缩:将非垃圾对象移动到一起,后面的空间则为可使用对象;存在问题:移动数据比较麻烦

c、复制:另外开辟一个空间,将所有的非垃圾对象移动到新的空间,原空间清空;优点:简单快速,缺点:需要空间支持

d、分代:YOUND(EDEN-from-to)| OLD;

首先在EDEN区分配空间,若空间不足,触发MINORGC:

EDEN+from/to --->to/from 使用复制的方法;

如果to放不下,直接放到OLD;如果对象倒腾了16次,则放到OLD区;

大对象直接放到OLD区;

如果OLD区满了,触发FULLGC;使用的是清理压缩的方法;

4、垃圾回收处理时机:垃圾回收时需要stop-the-world,CMS、g1



问题二:秒杀系统

问:设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?

答:1、挑战:瞬时的高并发的请求对现有系统的压力,

思路: 重新搞一套新系统针对秒杀场景

2、挑战: 新系统如何应对高并发

架构方案:流量漏斗,一层一层的过滤流量;

a、资源静态化+CDN支持

b、查询直接使用缓存、不经过数据库

3、挑战:防止作弊

架构方法:a、推送静态js标记开始秒杀,防止篡改秒杀按钮的可用性

b、下单页面加入随机数作为验证,秒杀开始才能响应秒杀请求



用户头像

WulalaOlala

关注

还未添加个人签名 2019.05.14 加入

还未添加个人简介

评论

发布
暂无评论
第九周-性能优化-JVM及秒杀