写点什么

架构师训练营 - 学习总结 - 第九讲

用户头像
吕浩
关注
发布于: 2020 年 08 月 05 日

JVM垃圾回收

1,判断可回收的对象:可达性算法,从根对象出发标记引用的对象,未标记的对象就是可回收的对象。

2,如何回收:清理、压缩、复制

3,回收时内存空间如何管理:分代回收

4,用什么样的过程进行回收:串行,并行,并发CMS,G1(现在都用这个)



JVM性能诊断工具

1,JPS

获取java进程pid和启动参数,进一步使用其他工具来监控和分析。

常用参数

-l 输出main class完整包

-q 显示pid

-m 输出传递给main方法的参数

-v 输出传递给JVM的参数



2,JSTAT

查看gc

jstat [Options] vmid [interval] [count]

Options -gcutil查看gc情况

vmid VM进程号

interval 间隔时间,毫秒

count 打印次数



举例:jstat -gcutil 94685 1000 10



3,JMAP

输出内存中所有对象



4,JSTACK

查看jvm内线程堆栈信息



5,JConsole,JVisualVM

可视化的集成工具

 

合理谨慎的使用多线程

启动线程数:[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数



ThreadLocal,既是共享也是独享,

创建一个静态成员变量

public staticThreadLocal myThreadLocal = new ThreadLocal();



通过把当前线程指针存入map实现每个线程获取自己的变量值



Java内存泄漏

由于开发人员的错误引起

程序保留对永远不再使用的内容的引用,这些对象将会占用并耗尽内存

长生命周期对象

静态容器

缓存



减少对象驻留内存的时间,用完之后设置为null可以加速回收



秒杀系统的设计

首页不访问数据库,首页做成静态。

并发控制,防秒杀器,只放最前面一部分人进入秒杀系统

简化流程,砍掉不重要的分支流程,以下单成功为秒杀成功标志,支付流程延后

前端优化



秒杀器预防

detail页面:url随机,描述前两秒放出,脚本生成,1000次访问上限控制

下单页面:订单ID随机,不能直接跳过detail页面进入,每个商品带预先生成的随机token作为URL参数,100次访问上限控制,如果秒杀过,直接跳到结束页面。



用户头像

吕浩

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 学习总结 - 第九讲