大厂面试题 支付宝 支付宝三面:JVM性能调优都做了什么? 小米 有做过JVM内在优化吗?从SQL、JVM、架构、数据库4个方面讲讲优化思路 蚂蚁金服 JVM的编译优化 JVM性能调优都做了什么? JVM诊断调优工具用过哪些? 二面:JVM怎样调优,堆内存、栈空间设置多少合适? 三面:JVM相关的分析工具使用过哪些?具体的性能调优步骤如何? 阿里 如何进行JVM调优?有哪些方法? 如何理解内存泄漏问题?有哪些情况会导致内存泄漏,如何解决? 字节跳动 三面:JVM如何调优,参数怎么调? 拼多多 从SQL、JVM、架构、数据库4个方面讲讲优化思路 京东 JVM诊断调优工具用过哪些? 每秒几十万并发的秒杀系统为什么会频繁发生GC? 日均百万级交易系统如何优化JVM? 线上生产系统OOM如何监控、定位 与解决? 高并发系统如何基于G1垃圾回收器优化性能? 为什么要调优? 防止出现OOM 解决OOM 减少GC、Full GC出现频率 监控的依据 运行日志 异常堆栈 GC日志 线程快照 堆转储快照 性能调优的步骤? 性能监控 一种以非强行或入侵方式收集或查看应用运营性能数据的活动 问题症状 GC频繁 CPU Load过高 OOM 内存泄漏 死锁 响应时间较长 性能分析 一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应。 方法 打印GC日志,通过GCViewer或者http://gceasy.io来分析日志信息 灵活运用命令行工具,jstack、jmap、jinfo等 dump出堆文件,使用内存分析工具分析 使用阿里Arthas,或jconsole,JVisualVM来实时查看JVM状态 jstack查看堆栈信息 性能调优 适当增加内存,根据业务背景选择垃圾回收器 优化代码,控制内存使用 增加机器,分散节点压力 合理设置线程池线程数量 使用中间件提高程序效率,比如缓存,消息队列等 性能指标 停顿时间或响应时间 打开一个站点:几秒 数据库查询一条记录(有索引):十几毫秒 机械磁盘一次寻址定位 :4毫秒 从机械磁盘顺序读取1M数据:2毫秒 从SSD顺序读取1M数据:0.3毫秒 从Redis读取一条数据:0.5毫秒 从内存读取1M数据:十几微秒 Java程序本地方法调用:几微秒 网络传输2KB数据:1微秒 启动参数:GC回收最大暂停时间 -XX:MaxGCPauseMillis 吞吐量:单位时间内完成的工作量 在GC中,运行用户代码的时间占总运行时间的比例(总运行时间=程序运行时间+内存回收时间) 启动参数:-XX:GCTimeRatio=n,吞吐量为:1-1/(1+n) […]
View DetailsJava Development Kit(JDK):编写Java程序的程序员使用的软件 Java Runtime Environment(JRE):运行Java程序的用户使用的软件 Server JRE:在服务器上运行Java程序的软件 Standard Edition(SE):用于桌面或简单服务器应用的Java平台 Enterprise Edition(EE):用于复杂服务器应用的Java平台 Micro Edition(ME):用于手机和其他小型设备的Java平台 Java FX:用于图形化用户界面的一个替代工具包,在Oracle的Java SE发布版本中提供 OpenJDK:Java SE的一个免费开源实现,不包含浏览器集成或JavaFX Java 2(J2):一个过时的术语,用于描述1998 ~ 2006年之间的Java版本 Software Development Kit(SDK):一个过时的术语,用于描述1998 ~ 2006年之间的JDK Update(u):Oracle的术语,表示bug修正版本 NetBeans:Oracle的集成开发环境
View Detailsfilter、interceptor、AOP的区别
filter作用于servlet
(通常指spring的)interceptor,拦截的对象是URL
AOP作用的对象可以是任何一个方法
Spring中的切面Aspect,这是Spring的一大优势。面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提取出去,便于后期的维护和迭代。
View Details