https://blog.csdn.net/wanhuiguizong/article/details/79289986

版权声明:本文为博主原创文章,转载请声明文章来源和原文链接。 https://blog.csdn.net/wanhuiguizong/article/details/79289986
问题:
在开发spring cloud过程中一个很严重的资源问题就是内存占用过高,而实际上本机开发测试并没有很大的请求量,所以这是对电脑资源的一种严重的浪费,甚至导致IDE卡死、崩溃。

一个完整包含eureka,steam,sleuth,config,rabbit,oauth2等一些列spring cloud全家桶应用和其他业务相关组件组成的单个服务在12G内存电脑上启动占用的内存就达到1到1.5G。如果同时需要启动很多个服务,内存完全不够用。

解决方法:
修改IDE针对每个项目的jvm参数。

这里以idea为例:

1.  打开Edit Configurations
Idea右上角,如图:

2.参考如下配置:

左边如果是spring cloud 的话肯定是在spring boot下,如果没有,可以点击左上角的+号手动添加,一般启动过的项目这里会有的。

关于jvm参数后面会讲。

这里要注意的是,register项目不需要太多资源(我这里设置128M),Gateway和config服务可以比register多一点(256M)。其它业务性服务才需要更多的资源(512M)。

请根据自己电脑配置情况调整,我的电脑是12G内存。

2.  关于jvm配置
参考1:http://blog.csdn.net/sdujava2011/article/details/50086933有如下描述

1. 设置JVM内存的参数有四个:

-Xmx   Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn   Java Heap Young区大小,不熟悉最好保留默认值;

-Xss   每个线程的Stack大小,不熟悉最好保留默认值;

参考2: https://www.cnblogs.com/w-wfy/p/6415856.html有如下描述:

一般用到最多的是

-Xms512m  设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmx512m ,设置JVM最大可用内存为512M。

-Xmn200m:设置年轻代大小为200M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

效果
效果很明显

12G内存启动了14个服务和其他各种软件(idea 3个),内存占用如下图:

---------------------
作者:wanhuiguizong
来源:CSDN
原文:https://blog.csdn.net/wanhuiguizong/article/details/79289986
版权声明:本文为博主原创文章,转载请附上博文链接!

Spring cloud开发内存占用过高解决方法的更多相关文章

  1. Firefox内存占用过高解决方法

    刚开始使用firefox火狐浏览器的时候,你会发现firefox占用内存大,CPU占用率高,打开网页停顿等问题,其实这些是因为firefox没有进行优化,默认设置是标准的设置的原因,解决方法如下: 一 ...

  2. Linux 中 Buffer/Cache内存占用过高解决方法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...

  3. Mysql5.6版本内存占用过高解决方法[链接]

    传送门: http://blog.linsongzheng.com/archives/159.html

  4. [转帖]Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

  5. Linux系统内存占用90%以上——解决方法

    Linux系统内存占用90%以上--解决方法   首先要明确一个问题:Linux系统内存占用90%以上,是否属于正常范围?网上有详细的解释,这属于正常现象~~~    www.2cto.com   L ...

  6. Linux中Cache内存占用过高解决办法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...

  7. Linux中buff/cache内存占用过高解决办法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个centos7的系统上,free命令的显示内容大概是这样一个状态: 这个命令几乎是每一个使用过Linux的人必会的命令,但越是 ...

  8. mysql 内存占用过多的解决方法

    以下是5.6默认的设置performance_schema_max_table_instances 12500table_definition_cache 1400table_open_cache 2 ...

  9. buff/cache 占用过高解决方法

    cache 读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备 buffer 写磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘 三条命令: #echo 1 & ...

随机推荐

  1. MySQL Sandbox安装使用

    前言 经常看见新同学对于安装MySQL十分惧怕,这是因为不熟悉的缘故,确实源码编译比较麻烦,缺少各种依赖包也够折腾的.当然还有预编译包,但是对于新同学来说好像都挺麻烦的.当然有yum安装,但是我们需要 ...

  2. wc 统计命令

    [root@localhost ~]# wc /etc/passwd // 统计行数.单词数.字符数 /etc/passwd [root@localhost ~]# wc -l /etc/passwd ...

  3. 爬虫请求库——requests

    请求库,即可以模仿浏览器对网站发起请求的模块(库). requests模块 使用requests可以模拟浏览器的请求,requests模块的本质是封装了urllib3模块的功能,比起之前用到的urll ...

  4. PinyinUtil

    import java.util.HashSet;import java.util.Set;import java.util.regex.Matcher;import java.util.regex. ...

  5. BBS项目

    一.需求分析 1.首页(显示文章) 文章详情 点赞,点踩 文章评论(子评论,评论的展示) 登录功能(图片验证码) 注册功能(基于form验证,ajax) 个人站点(不同人不同样式,文章过滤) 后台管理 ...

  6. MySQL数据库SQL修改数据规范

    start transaction; select id,rname,free_course_ph,cmp_id,free_date_limit_ph from ebk_students WHERE ...

  7. cocos 简便斗地主发牌动画

    niuniuSend : function (int) { switch(int) { case 0: for(var i=0;i<5;i++){ var sp = new ccui.Image ...

  8. cocos2d-js 遮挡层(禁止触摸事件传递层)

    在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制,本文主要针对cocos ...

  9. UVa 202 Repeating Decimals(抽屉原理)

    Repeating Decimals 紫书第3章,这哪是模拟啊,这是数论题啊 [题目链接]Repeating Decimals [题目类型]抽屉原理 &题解: n除以m的余数只能是0~m-1, ...

  10. MyBatis基础入门《四》接口方式.Select查询集合

    MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...