成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot & Spring Cloud 應用內存管理

移動開發 開發工具
在整體應用架構中,非生產環境情況下,一般 1GB 或者 2GB 的 RAM 就足夠了。如果我們將這個應用程序劃分為 20 或 30 個獨立的微服務,那么很難期望 RAM 仍將保持在 1GB 或 2GB 左右。特別是如果我們使用 Spring Cloud 的時候。

 

Memory Management

 

 

Memory Management

 

在整體應用架構中,非生產環境情況下,一般 1GB 或者 2GB 的 RAM 就足夠了。如果我們將這個應用程序劃分為 20 或 30 個獨立的微服務,那么很難期望 RAM 仍將保持在 1GB 或 2GB 左右。特別是如果我們使用 Spring Cloud 的時候。

首先,準備三個服務,Eureka 服務 + 提供 REST API 的兩個簡單的微服務,并將微服務注冊到 Eureka。此處,不以任何方式限制這些應用程序的內存使用。

提示:Spring Cloud 簡單應用的搭建示例:https://www.ictgu.cn/share/6644e468

就像你在下圖看到的一樣,三個微服務大概占用了電腦 1.5GB 的 RAM 內存。這三個服務是最簡單的應用程序,基本沒有數據處理量,對于這樣的內存消耗量,顯然是不理想的。RAM 的***使用量是用于 Eureka 發現服務,***的用于初始化聲明式客戶端以調用其他服務的 API。

未限制的內存用量

關于內存使用量如下圖 JProfiler 制作的圖表。如圖所示,內存使用受堆影響,與非堆相比,它占用了大量空間。

Heap

Non-Heap

當然,***個明顯的問題是我們是否需要在堆上運行我們的微服務應用程序的空間。答案是否定的,我們沒有。現在,我們來簡要介紹一下在 Java 8 中如何進行內存管理過程。

我們可以將JVM內存分為兩個不同的部分:堆(Heap)、 非堆(Non-Heap)。如上圖所示,我們的微服務器的大小為大小(〜600MB)。反過來,JVM 內存 由 年輕代(Young Generation) 、老年代(Old Generation)組成。所有新創建的對象都位于年輕代中。當年輕代被填滿時,執行次要垃圾收集(Minor GC)。

更準確的說,這些位于年輕代的一部分對象成為 Eden Space。Minor GC將所有仍然使用的對象從 Eden Space 移動到 Survivor 0。對于Survivor 0 和 Survivor 1 空間執行相同的過程。在 GC 的許多循環中幸存的所有對象都被移動到老年代內存空間。從哪里移除對象是由 Major GC負責的。為了更好地了解下圖,在運行 java -jar 命令時,可以使用以下參數設置 Java Heap 的內存限制:

  • -Xms – JVM啟動時的初始堆大小
  • -Xmx – ***堆大小
  • -Xmn - 年輕代的大小,其余的空間是老年代

JVM 內存

JVM內存的第二部分,從我們的角度來看,上圖略顯不重要,它是Non-Heap。 Non-Heap 包括以下部分:

  • Thread Stacks :所有運行的線程的空間。可以使用 -Xss 參數設置***線程大小。
  • Metaspace : 它替代了 PermGem(Java 7中是JVM堆的一部分)。在 Metaspace 中,通過應用程序加載所有類和方法。看看Spring Cloud 包含的包數量,我們不會在這里節省大量的內存。可以通過設置 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize 參數來管理 Metaspace 大小。
  • Code Cache : 這是由 JIT(即時)編譯器編譯為本地代碼的本機代碼(如JNI)或 Java 方法的空間。***大小設置-XX:ReservedCodeCacheSize 參數。
  • Compressed Class Space : 使用 -XX:CompressedClassSpaceSize 設置為壓縮類空間保留的***內存。
  • Direct NIO Buffers

更簡單來說,Heap 是用于對象,Non-Heap 是用于類。可以想像,當我們的應用程序 Non-Heap 大于 Heap 時,我們可以結束這種情況。首先,讓我們用下面的參數來運行我們的服務發現。在我看來,如果您在 Spring Boot 上啟動具有內嵌 Tomcat 的 Eureka,這些配置是***的值。

  1. -Xms16m \ 
  2. -Xmx32m \ 
  3. -XX:MaxMetaspaceSize=48m \ 
  4. -XX:CompressedClassSpaceSize=8m \ 
  5. -Xss256k \ 
  6. -Xmn8m \ 
  7. -XX:InitialCodeCacheSize=4m \ 
  8. -XX:ReservedCodeCacheSize=8m \ 
  9. -XX:MaxDirectMemorySize=16m 

如果使用REST API 的微服務(帶有 Feign 或 Ribbon),我們需要增加一些值:

  1. -Xms16m \ 
  2. -Xmx48m \ 
  3. -XX:MaxMetaspaceSize=64m \ 
  4. -XX:CompressedClassSpaceSize=8m \ 
  5. -Xss256k \ 
  6. -Xmn8m \ 
  7. -XX:InitialCodeCacheSize=4m \ 
  8. -XX:ReservedCodeCacheSize=8m \ 
  9. -XX:MaxDirectMemorySize=16m 

按照如上配置,JProfiler 生成了如下圖表。區別在于啟動和請求處理時間。與早期的設置相比,該應用程序的運行速度較慢。當然,我不會在生產環境下設置這樣的參數。

Heap

Non-Heap

Non-Heap

當前的總內存使用情況如下。微服務仍然是內存占用***的,而Eureka 最小。

低配置的內存用量

我也嘗試使用不同的 Web 容器運行 Eureka 應用程序。您可以通過在 pom.xml 文件中包含以下的依賴關系輕松更改 Web 容器。

使用 Undertow

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-undertow</artifactId> 
  4. </dependency> 

使用 Jetty

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-jetty</artifactId> 
  4. </dependency> 

結果排名:Undertow(116MB)、Tomcat(122MB)、Jetty(128MB)。 此測試僅針對 Eureka 服務執行,而無需注冊任何微服務。

 【本文為51CTO專欄作者“翟永超”的原創稿件,轉載請通過51CTO聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2018-06-27 14:50:06

Cloud StudiSpring Boot應用

2020-07-03 08:00:11

Spring BootSpring Clou流程

2025-01-10 09:51:10

內存Java應用程序

2020-06-30 07:58:39

微服務Spring BootCloud

2023-11-15 16:46:04

內存Java

2021-01-14 07:54:19

Spring Clou應用路由

2021-08-12 10:49:19

Spring Clou內存Java

2018-10-22 15:34:31

Spring Boo監控視化

2018-05-25 16:32:45

Spring BootJava開發

2022-02-09 20:39:52

Actuator應用監控

2016-10-14 14:16:28

Spring BootJava應用

2018-07-27 15:43:24

Spring Clou管理架構

2024-09-30 11:51:07

2021-05-18 07:30:36

開發Spring Boot日志

2025-02-27 00:10:19

2021-02-03 12:47:09

Spring Boot應用監控

2023-10-25 18:08:13

應用容器化Docker

2024-12-03 10:59:36

2023-12-08 12:12:21

2020-11-10 09:19:23

Spring BootJava開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精片| 亚洲精品国产成人 | 国产传媒在线观看 | 国产精品污污视频 | 九九久久久 | 51ⅴ精品国产91久久久久久 | 毛片免费看 | 国内毛片毛片毛片毛片 | 91精品国产综合久久久动漫日韩 | 亚洲成人一区二区 | 91免费视频观看 | 性一交一乱一透一a级 | 欧美黑人一区二区三区 | 国产精品视频播放 | 欧美激情综合五月色丁香小说 | 一区二区三区四区在线视频 | 国产欧美日韩在线 | www.免费看片.com | 日韩av啪啪网站大全免费观看 | 视频一区二区在线观看 | 日韩免费视频一区二区 | 日韩高清国产一区在线 | 国产精品成人一区二区三区夜夜夜 | 日韩三区 | 欧美bondage紧缚视频 | 中文字幕第一页在线 | 免费看日韩视频 | 亚洲欧美一区二区三区视频 | 久久精品国产99国产精品亚洲 | av网址在线 | 日韩中文字幕在线免费 | 午夜看片网站 | 91欧美| 男女爱爱网站 | 成人国产精品一级毛片视频毛片 | 91性高湖久久久久久久久_久久99 | 日韩电影免费在线观看中文字幕 | 中文字幕免费在线观看 | 国产精品视频网址 | 国产一级视频在线播放 | 成人国产精品免费观看视频 |