springcloud单个服务内存使用详情

查看单个进程的服务占用率

[root@insure dev]# ps -aux|grep claimoauth
root      8608  0.1  4.5 13701856 1481780 ?    Sl   Dec27   2:12 java -jar /opt/dev/claimoauth/claimoauthdev.jar --spring.profiles.active=application.properties
root     25502  0.0  0.0 112708   980 pts/7    S+   13:53   0:00 grep --color=auto claimoauth
root     27763  0.0  4.6 13698780 1527300 ?    Sl   Dec20   8:32 java -jar claimoauthprod.jar

标红的部分单位是K  可以看到单个服务的内存占用达到了1.4G

查看服务器剩余内存

[root@insure dev]# free -m
              total        used        free      shared  buff/cache   available
Mem:          32012       24056        4341           0        3615        7511
Swap:             0           0           0

设置单个微服务的内存大小之前先了解一些基础知识

      1、栈内存存储基本类型的变量对象的引用变量。
  2、堆内存用于存放由new创建的对象和数组。每new一个对象就在堆内存中开辟一个新的存储空间存储此实例对象。
  3、Person p = new Person();
    执行new命令时程序执行两步:a:在堆内存中开辟一段空间,存储new出来的对象;b:在栈内存中添加一个变量p,p中存放的是该对象在堆内存中开始存放处的物理地址。
  4、p = null;
    执行此步骤的时候程序只是更改栈内存中的P变量所保存的地址,把地址指向null,而并没有操作堆内存(把p所指向的对象实例清空回收)。
  5、无论是形参或者实参,执行 XXX = null;操作时都是把XXX变量栈中存储的地址改为指向null的地址。不操作堆中的数据。

设置JVM内存的参数有四个

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

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

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

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

了解了以上的概念之后,微服务启动设置内存大小就好理解了

java -Xms500M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M -jar api-config.jar

-Xms -Xmx这两个一个初始值一个最大值可以根据实际需要设置堆内存的大小 一般3G左右

-XX:PermSize -XX:MaxPermSize 是栈大小的初始值和最大值 

注意一点:微服务集群是在不同服务器上面搭建不同的服务才算是集群,单台机器起多个不算。

原文地址:https://www.cnblogs.com/mutong1228/p/10190609.html