16

Spring Cloud 开发内存占用过高,咋解决?

 3 years ago
source link: https://my.oschina.net/javaroad/blog/5189663
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Spring Cloud 开发内存占用过高,咋解决?

在开发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内存。

3.关于jvm配置

参考1:

http://blog.csdn.net/sdujava2011/article/details/50086933

设置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个),内存占用如下图:

原文链接:https://blog.csdn.net/wanhuiguizong/article/details/79289986

版权声明:本文为CSDN博主「wanhuiguizong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2021最新版)

2.别在再满屏的 if/ else 了,试试策略模式,真香!!

3.卧槽!Java 中的 xx ≠ null 是什么新语法?

4.Spring Boot 2.5 重磅发布,黑暗模式太炸了!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!


Recommend

  • 21

    这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的。 线上一台服务器 CPU 使用...

  • 8

    高频面试题:Java程序占用 CPU 过高怎么排查古时的风筝公众号「古时的风筝」这个问题可...

  • 12
    • www.zenlife.tk 4 years ago
    • Cache

    内存占用过高

    内存占用过高2017-02-18就从这个issue说起吧。它描述的问题是这样子的,事务在提交之前,会把所有操作的数据都在本地组织好,然后一口气提交。这部分数据显然是需要占用内存的...

  • 10

    GraalVM是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务。最近比较火的 Java 框架 Quarkus默认支持 GraalVM 下图为 Quarkus 和传统框架(SpringBoot) 等对比图,更快的启动数...

  • 5

    【.Net Core】分析.net core在linux下内存占用过高问题--持续更新 随着程序运行,内...

  • 4

    Chayredis6天前本文正在参加「Java应用线上问题排查经验/工具分享」活动 先点赞再看,养成好习惯 背景 全国最大...

  • 5

    文|魏熙凯(蚂蚁集团技术专家)本文 6320 字 阅读 10 分钟内存安全的 Rust,虽然基本不会出现内存泄漏,但如何合理分配内存,是每个复杂应用都要面临的问题。往往随着业务的不同,相同的代码可能会产生不同的内存占用。因此,有不小的概率会出现...

  • 5

    本文来自: PerfMa技术社区 PerfMa(笨马网络)官网

  • 5

    Windows 10 Docker Desktop Vmmem 占用太多内存解决办法 解决办法就是使用 wls2 配置文件限制内存上限。 新建文件 C:\Users\xxx\.wslconfig,xxx 是你的...

  • 3
    • mathpretty.com 1 year ago
    • Cache

    php-fpm 占用 CPU 过高

    摘要本文主要介绍 php-fpm 的配置,从而尝试解决 CPU 占用过高的问题。同时也会包含 php 服务在 Ubuntu 下如何启动等。 最近发现服务器的 CPU 占用过高,甚至到了100%,导致所有的页面都无法打开。于是使用 htop 命令查看,发现

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK