作业 1

用户头像
chenzt
关注
发布于: 2020 年 08 月 04 日

1.请简述 JVM 垃圾回收原理

垃圾回收的目的是为程序保持尽可能多的可用堆。 JVM会删除堆上不再需要从堆引用的对象。JVM通过一种可达性分析算法进行垃圾对象的识别,具体过程是:从线程栈帧中的局部变量,或者是方法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。

回收的方法主要有三种:

1.清理:将垃圾对象占据的内存清理掉,其实JVM并不会真的将这些垃圾内存进行清理,而是将这些垃圾对象占用的内存空间标记为空闲,记录在一个空闲列表里,当应用程序需要创建新对象的时候,就从空闲列表中找一段内存分配给新对象。

2.压缩:从退空间的头部开始,将存货的对象拷贝放在一段连续的内存空间中,那么其余的空间就是连续的空闲空间。

3.复制:将堆空间分为两部分,只在其中一部分创建对象,当这部分空间用完的时候,将标记过的可用对象赋值到另一个空间中。



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

秒杀业务的特点是:数据量少,短时间内有大量的读写操作,在用户量并发量大时容易造成锁冲突。

核心思路是降低读写操作

降读:使用缓存技术

降写:把请求拦截在系统的上游。

用户头像

chenzt

关注

还未添加个人签名 2018.05.15 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
作业请添加”极客大学架构师训练营“标签,便于分类查找~
2020 年 08 月 05 日 14:12
回复
没有更多了
作业1