1>如何定位线上服务OOM问题 

2>JVM的GC ROOTS存在于那些地方

3>mysql innodb怎样做查询优化

4>java cas的概念

Java服务OOM,比较常见的原因是

⭐️ 有可能是内存分配确实过小,而正常业务使用了大量内存 比如jmp -heap命令可以查看新生带,老年代内存大小的情况。看看内存本身是否分配过小。

⭐️ 某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽 ,比如jmap -histo:live 对象显示存活对象的信息,并按照所占内存大小的排序。因为包含了实例数、所占         内存大小、类名,所以很直观。

⭐️ 某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接

2>JVM的GC ROOTS存在于那些地方、

问到这个问题应该是前面一步步引导过来的,如果没有,在直接回答这个问题之前,最好简要描述一下JVM的内存结构和根搜索算法(GC ROOTS Tracing)做可达性分析。

⭐️  虚拟机栈(栈桢中的本地变量表)中的引用的对象

⭐️  方法区中的类静态属性引用的对象

⭐️  方法区中的常量引用的对象

⭐️  本地方法栈中JNI的引用的对象

Gc管理的主要的区域是java堆,一般情况只针对堆进行垃圾回收。方法区,栈,和本地方法区不被Gc所管理,因而选择这些区域作为GC  ROOTS ,被GC  ROOTS引用的不会

被垃圾回收。

mysql innodb怎样做查询优化

⭐️  innodb_buffer_pool_size 此参数的作用是缓冲数据和索引,对性能可以产生线性的提高,最大可设置为内存大小的百分之七八十的样子

⭐️  打开慢查询日志,增加参数:log-queries-not-using-indexes,方便把系统中没有走索引的sql语句全抓出来优化

⭐️  通过explain做查询分析,看看有没有用索引,访问的行数rows

⭐️  关闭skip_name_resolve,减少逆向DNS解析的消耗

另外还有一些实际写代码过程中深入骨髓的,比如数据动静分离提高query_cache的命中率啦,减少字段冗余,减少查询次数啦,复杂查询分解啦,分页优化啦啥的。

4>java cas的概念

cas:compare and swap,比较并交换 

java的concurrent包中借助cas实现了区别于synchronized同步锁的一种乐观锁。

CAS利用CPU的CAS指令,同时借用JNDI来完成java的非阻塞算法,其他的原子操作都是利用类似的特性完成的。java的concurrent包相对于使用synchronized性能提升也主要依赖它。

最新文章

  1. Oracle EBS - Doc
  2. ionic路由传值
  3. web服务器软件集成包问题
  4. linux 终端报错 Out of memory: Kill process[PID] [process name] score问题分析
  5. linux小包集合
  6. C#版二维码生成器
  7. javascript:history.go(-1);
  8. C++ - 容器(container)的erase()函数
  9. HDU-1256-画8
  10. ACM-ICPC北京赛区(2017)网络赛_Minimum
  11. Android手机通过APN设置上网的方法
  12. [LeetCode] Toeplitz Matrix 托普利兹矩阵
  13. python之动态参数 *args,**kwargs和命名空间
  14. Python学习day9 函数Ⅰ(基础)
  15. 双十一LoanMarket压力测试报告
  16. Hibernate主键生成策略及选择
  17. jQuery formValidator API
  18. 085 HBase的二级索引,以及phoenix的安装(需再做一次)
  19. Java+大数据开发——Hadoop集群环境搭建(一)
  20. Redis可以用来做什么?(摘自http://www.lianpenglin.cc廉鹏林博客)

热门文章

  1. TDDL实践
  2. 第136天:Web前端面试题总结(理论)
  3. hdu3507 Print Article(斜率优化入门)(pascal)
  4. LeetCode 671. Second Minimum Node In a Binary Tree
  5. 运维朋友们,别再问需不需要学 Python 了!
  6. C++解析-外传篇(2):函数的异常规格说明
  7. 基于 HTML5 的人脸识别技术
  8. Function.caller, arguments.caller, arguments.callee, arguments.callee.calller
  9. bzoj1907: 树的路径覆盖(树形DP)
  10. [JSOI2009]瓶子和燃料