自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(285)
  • 收藏
  • 关注

原创 LruCache在美团DSP系统中的应用演进12

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:31 981 1

原创 LruCache在美团DSP系统中的应用演进1

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:23 804 1

原创 LruCache在美团DSP系统中的应用演进2

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:17 646 2

原创 LruCache在美团DSP系统中的应用演进3

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:14 696 1

原创 LruCache在美团DSP系统中的应用演进4

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:13 813 2

原创 LruCache在美团DSP系统中的应用演进5

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:10 527

原创 LruCache在美团DSP系统中的应用演进6

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:08 957 3

原创 LruCache在美团DSP系统中的应用演进7

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:07 638 3

原创 LruCache在美团DSP系统中的应用演进8

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:03 543 3

原创 LruCache在美团DSP系统中的应用演进9

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:41:02 886

原创 LruCache在美团DSP系统中的应用演进10

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:40:59 966 2

原创 LruCache在美团DSP系统中的应用演进11

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:40:57 1043 1

原创 LruCache在美团DSP系统中的应用演进13

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:40:54 920 1

原创 LruCache在美团DSP系统中的应用演进14

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:40:50 901 1

原创 LruCache在美团DSP系统中的应用演进15

LruCache采用的缓存算法为LRU(Least Recently Used),即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后,会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据,越早使用的数据越靠近链表尾部,越晚使用的数据越靠近链表头部;映射表通过Key-Value结构,提供高效的查找操作,通过键值可以判断某一数据是否缓存,如果缓存直接获取缓存数据所属的链表节点,进一步获取缓存数据。

2024-12-31 10:40:47 717 4

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现14

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:41 756 3

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现3

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:34 850 1

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现5

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:31 989

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现1

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:27 775

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现2

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:21 622 2

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现4

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:17 928

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现6

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:11 966 1

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现7

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:07 658 3

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现8

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:05 606 3

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现9

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:02 845 1

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现10

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:45:01 878 1

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现11

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:44:57 826

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现12

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:44:55 607 3

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现13

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:44:53 932 1

原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现15

以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。

2024-12-30 08:44:51 803 1

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结1

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:53 737 1

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结2

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:51 656

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结3

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:48 969 1

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结4

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:46 591 3

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结5

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:44 857 3

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结6

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:41 715 1

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结7

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:39 926 3

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结8

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:37 828 2

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结9

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:35 965

原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结10

因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。

2024-12-29 19:22:33 978 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除