摘要:
目录如下: 什么是JVM的堆 是不是所有的Java对象都放在堆上? 线程和堆的关系 堆的内部结构 面试题 新生代与老年代 如何设置堆的大小? 新生代与老年代的比例 设置Eden、幸存者的比例 常用参数 对象分配 金句: 分配过程 内存分配策略(或对象提升(promotion)规则): 对象分配原则 阅读全文
摘要:
具有Heap Profiler功能的工具,如mat(memory analyse tool)、Google Heap Profiler、JProfiler等,经常会出现shallow heap与remainder heap,这两个词在我们的实际开发中基本没有出现过,那么我们在用mat解析dump出来 阅读全文
摘要:
问题现象 7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。 那为什么此服务内存占用 阅读全文
摘要:
背景 某一天,有一位同学在群里发来一张 jmap -heap 内存使用情况图。 说 Survivor 区占比总是在 98% 以上。 仔细观察这张图,其中包含几个重要信息: From 和 To 区都比较小,只有 10M。容量比较小,才显得占比高。 Old 区的占比和使用量(两个多 G)都比较高。 此外 阅读全文
摘要:
先说一下基本情况,本次是对线上商品服务的JVM优化。商品服务的访问量非常高,单机QPS在3000左右,线上总共部署了15个商品服务节点。JVM堆内存大小是8G,其中给新生代分配了2G,老年代垃圾回收器采用CMS,新生代垃圾回收器是ParNew。 优化前的状况 首先我们使用 jstat 查看了 GC 阅读全文
摘要:
如果你检查你的 Linux 系统上运行的进程,你可能会对一个叫做 “kerneloops” 的进程感到好奇。提示一下,它是 “kernel oops”,而不是 “kerne loops”。 坦率地说,“oops” 是 Linux 内核的一部分出现了偏差行为。你有做错了什么吗?可能没有。但有一些不对劲 阅读全文
摘要:
在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化 那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1 为什么要有Survivor区 先不去想为什么有两个Survivor区,第一个问题是,设置Surviv 阅读全文
摘要:
线程池和连接池监控https://www.alibabacloud.com/help/zh/arms/application-monitoring/user-guide/thread-pool-monitoring 阅读全文
摘要:
最近某个应用程序老是卡,需要重启才能解决问题,导致被各种投诉,排查问题是Druid 连接池泄露引发的血案。。 异常日志如下: ERROR - com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 阅读全文
摘要:
随着时间的推移,我在应用程序中获得了成百上千个这样的process_reaper线程。有人知道这些可能是什么吗?它们似乎是在我的Runtime.exec()中使用的,但是我在finally语句中销毁了我的进程,但它们仍然会出现 屏幕截图:http://www.dropmocks.com/mBxM5 阅读全文