来自:美团技术团队,作者: 纪兵
链接: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优化,那么就需要了解默认的。
关于
内存
最常见的设置为初始堆大小和最大堆
内存
。很多人懒得去设置,而是采用的默认值。特别是在开发环境下,如果启动的微服务比较多,
内存
会被撑爆。
而默认
内存
配置策略分两种场景,和。以