- 博客(286)
- 收藏
- 关注
原创 洋钱罐高频编程考题:将有序数组转换为二叉搜索树(简单)
要将一个升序排列的整数数组转换为一棵平衡二叉搜索树(BST),我们可以利用递归方法构建树。这是因为一个平衡的BST的中序遍历应该是升序排列的,因此我们可以通过递归的方式选择中间的元素作为根节点,递归构建左右子树,从而保持平衡。:由于数组已经是升序排列的,选择中间元素作为根节点可以保证树的高度平衡。[1,null,3]和[3,1]都是高度平衡二叉搜索树。排列,请你将其转换为一棵平衡二叉搜索树。
2025-01-19 18:14:38
1217
1
原创 Transformer大数据分布式因果推断在美团履约平台的探索与实践2
1.背景中国有句古话:“民以食为天”。对食物的分析和理解,特别是识别菜肴的食材,在健康管理、卡路里计算、烹饪艺术、食物搜索等领域具有重要意义。但是,算法技术尽管在目标检测[1]-[3]、通用场景理解[4][5]和跨模态检索[6]-[8]方面取得了很大进展,却没有在食物相关的场景中取得好的表现,尤其是对烹饪菜肴的相关场景。其核心原因是缺乏细粒度食材的基准,这已经成为该领域发展的瓶颈。以往的研究主要集中在食物层面的表征学习,如Food2K上的食物识别[9]-[12],UNIMIB2016上的食物检测
2025-01-19 18:14:31
855
1
原创 Hadoop YARN:调度性能优化实践1
本文主要介绍了美团点评HadoopYARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2025-01-19 18:14:12
577
原创 洋钱罐高频编程考题:删除链表的倒数第 N 个结点(中等)
具体可参考:https://zyfcodes.blog.youkuaiyun.com/article/details/141401712。要删除链表中的倒数第n个节点,进阶要求使用一趟扫描来实现。可以使用双指针法(快慢指针)来完成这个任务。:如果删除的是头节点,需要特别处理,直接返回。指针正好停在要删除的节点的前一个节点上。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?指针,跳过需要删除的节点。,都指向链表的头节点。
2025-01-19 18:14:02
1009
1
原创 洋钱罐高频编程考题:环形链表(简单)
具体可参考:https://zyfcodes.blog.youkuaiyun.com/article/details/141401712。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从0开始)。判断链表中是否有环,可以使用一种高效的算法,即。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。
2025-01-19 18:13:52
1050
原创 zookeeper 都有哪些使用场景?思考8
那么此时就可以使用zookeeper分布式锁,一个机器接收到了请求之后先获取zookeeper上的一把分布式锁,就是可以去创建一个znode,接着执行操作;这个其实是zookeeper很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B系统消息消费之后处理了。,一旦B系统处理完了就修改zookeeper那个节点的值,A系统立马就可以收到通知,完美解决。那个znode,结果发现自己创建不了,因为被别人创建了,那只能等着,等第一个机器执行完了自己再执行。
2025-01-19 18:13:43
1157
原创 Android 兼容 Java 8 语法特性的原理分析10
Java8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达(函数闭包)函数式接口(@FunctionalInterface)StreamAPI(通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2025-01-19 18:13:15
535
原创 人工智能短视频内容理解与生成技术在美团的创新实践8
以上分享了美团在视频标签、视频封面与剪辑、视频细粒度像素级编辑技术领域,通过与业务场景的结合期望为商家和用户提供更加智能的信息展示和获取方式。未来,短视频技术应用方面,在美团丰富的业务场景包括本地生活服务、零售电商,都会发挥更大的潜在价值。视频理解技术方面,多模态自监督训练,对于缓解标注数据依赖,提升模型在复杂业务场景的泛化性能方面非常有价值,我们也在做一些尝试和探索。HadoopYARN:调度性能优化实践-美团技术团队。
2025-01-19 18:13:05
676
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结1
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstackpid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了SpringBoot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2025-01-19 18:12:44
588
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS覆盖率检测原理与增量代码测试覆盖率工具实现-美团技术团队日常开发Guava提效工具库核心实用指南梳理_guavastring转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_esjvm配置-优快云博客。
2025-01-19 18:10:51
967
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:16:35
607
2
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:15:16
903
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:15:12
929
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:15:09
797
2
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:15:05
865
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:47
1009
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:43
889
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:36
592
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:33
788
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:28
1100
1
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:25
615
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
背景对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久。如果在开发、测试阶段能够提前暴露问题,就有助于避免线上事故的发生。代码覆盖率检测正是帮助开发、测试同学提前发现问题,保证代码质量的好帮手。对于开发者而言,代码覆盖率可以反馈两方面信息:自测的充分程度。 代码设计的冗余程度。尽管代码覆盖率对代码质量有着上述好处,但在 iOS 开发中却使用的不多。我们调研了市场上常用的 iOS 覆盖率检测工具,这些工具主要存在以下四个问题:第三方工具有时生成的检测报告文
2024-12-30 00:14:21
661
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:17
1028
2
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:14
645
原创 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
以上是我们在代码开发质量方面做的一些积累和探索。通过对覆盖率生成、解析逻辑的探究,我们揭开了覆盖率检测的神秘面纱。开发阶段的增量代码覆盖率检测,可以帮助开发者聚焦变动代码的逻辑缺陷,从而更好地避免线上问题。iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 - 美团技术团队日常开发Guava提效工具库核心实用指南梳理_guava string转list-优快云博客从ES的JVM配置起步思考JVM常见参数优化_es jvm配置-优快云博客。
2024-12-30 00:14:10
824
2
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结2
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:14
1180
2
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结3
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:12
877
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结4
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:10
947
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结5
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:08
762
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结6
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:06
819
3
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结7
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:04
931
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结8
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:02
627
1
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结9
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:34:00
775
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结10
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:57
892
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结11
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:56
643
3
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结12
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:53
578
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结13
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:51
530
1
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结14
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:49
583
原创 Spring Boot引起的“堆外内存泄漏”排查及经验总结15
因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈,找到对应的线程栈(注意10进制和16进制转换)如下:strace申请空间的线程栈这里基本上就可以看出问题来了:MCC(美团统一配置中心)使用了Reflections进行扫包,底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类,需要用到堆外内存,然后使用Btrace去追踪这个类,栈如下:btrace追踪栈然后查看使用MCC的地方,发现没有配置扫包路径,默认是扫描所有的包。
2024-12-29 18:33:46
876
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人