来自:美团技术团队,作者: 纪兵

链接:https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html

为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCacheSize=128m, -Xss512k -Xmx4g -Xms4g,-XX:+UseG1GC -XX:G1HeapRegionSize=4M”,实际使用的物理内存如下图所示:

top命令显示的内存情况

1. 使用Java层面的工具定位内存区域(堆内内存、Code区域或者使用unsafe.allocateMemo

来自:美团技术团队,作者: 纪兵链接:https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物... spring boot 使用mybatis连接phoenix使用hbase ##当前版本: phoenix:4.13.1-HBase-1.2 (与hbase服务器phoenix版本一致) spring boot :2.0.2.RELEASE ##注意:无法与swagger2集成:swagger2的guava包不能低于18.0 ##使用注意事项: 1.(必要设置)配置本地HADOOP_HOME环境变量,在windows10时需要重启服务器 2.(必要设置)配置hosthome C:\Windows\System32\drivers\etc下的hosts里面添加与zookeeper一致的hosthome设置,添加: 10.122.22.8 blsdh014 10.122.22.9 blsdh017 在开发 springboot 过程中一个很严重的资源问题就是 内存 占用过高,而实际上本机开发测试并没有很大的请求量,所以这是对电脑资源的一种严重的浪费,甚至导致IDE卡死、崩溃。 有时候非常简单的一个项目,只要启动就轻松占用1g 内存 ,今天优化了下,成功把 内存 降到200m左右,其实主要开始默认配置有点大,这样优化不管是本地还是服务器又可以畅快运行了。 启动命令示例,这样启动150m左右差不多够了: nohup java -jar -XX:Metasp
工作中常常发现:一个简单的应用, 内存 然达到的 内存 。   其实,有些服务的体量根本用不了这么多。那么,在中如果未设置参数时,是如何配置的呢?  当运行一个项目时,如果未设置参数,默认会采用自身默认的配置策略。在资源比较充足的情况下,开发者倒是不太用关心 内存 的设置。但一旦涉及到资源不足,JVM优化,那么就需要了解默认的。   关于 内存 最常见的设置为初始堆大小和最大堆 内存 。很多人懒得去设置,而是采用的默认值。特别是在开发环境下,如果启动的微服务比较多, 内存 会被撑爆。   而默认 内存 配置策略分两种场景,和。以