问题springcloud开发过程中一个很严重的资源问题就是内存占用过高。事实上,本地开发测试并没有大量的请求,所以这是对计算机资源的严重浪费。它甚至会导致IDE冻结和崩溃。由eureka、steam、sleuth、config、rabbit、oauth2等springcloud全家桶应用和其他业务相关组件组成的单个服务在12G内存的电脑上启动时会占用1~1.5G内存。如果需要同时启动很多服务,内存就完全不够用了。解决方法是为每个项目修改IDE的jvm参数。这里以idea为例:1、打开右上角的EditConfigurationsIdea,如图:2、参考左侧如下配置。如果是springcloud,那肯定是在springboot下。过去的项目将在这里。jvm的参数我后面再说。这里要注意register项目不需要太多资源(我这里设置128M),Gateway和config服务比register(256M)多一点即可。其他业务服务需要更多资源(512M)。请根据您的电脑配置进行调整,我的电脑是12G内存。3、关于jvm配置参考1:http://blog.csdn.net/sdujava2...设置JVM内存有四个参数:-XmxJavaHeap最大值,默认值为物理内存的1/4,best设置值应取决于计算机中物理内存的大小和其他内存开销;-Xms是JavaHeap的初始值,服务器端JVM最好将-Xms和-Xmx设置成相同的值,开发测试机JVM可以保持默认值;-XmnJavaHeapYoung区的大小,如果不熟悉,最好保持默认值;-Xss每个线程的Stack大小,如果不熟悉最好保持默认值;参考2:https://www.cnblogs.com/w-wfy...最常用的是-Xms512m设置JVM使内存为512m。可以将此值设置为与-Xmx相同,以避免JVM在每次垃圾收集完成时重新分配内存。-Xmx512m,设置JVM最大可用内存为512M。-Xmn200m:设置新生代大小为200M。整个堆大小=新生代大小+老年代大小+永久代大小。永久代一般固定大小为64m,所以增加新生代会减小老年代的大小。这个值对系统性能影响很大,Sun官方推荐配置为整个堆的3/8。-Xss128k:设置每个线程的堆栈大小。JDK5.0之后每个线程的栈大小为1M,之前每个线程的栈大小为256K。调整更多应用程序线程所需的内存大小。在相同的物理内存下,减小这个值可以产生更多的线程。但是操作系统对一个进程的线程数还是有限制的,不能无限产生。经验值在3000~5000左右。效果很明显!12G内存启动14个服务等各种软件(思路3),内存使用情况如下:
