精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

測試和優化Java應用程序的內存使用,你學會了嗎?

開發 前端
垃圾收集器日志提供了檢查應用程序需要多少內存的正確指標。能夠在與生產系統相同的環境中,以類似的負載測試應用程序至關重要。也許“在生產環境中測試”可能是實現這一目標的最簡單方法。

垃圾收集器日志文件可以幫助定位代碼中的問題,并確定服務器或虛擬環境的正確尺寸。

譯自Test and Optimize Your Java Application's Memory Use,作者 Frank Delporte。

確定運行 Java 應用程序的理想內存大小可能非常困難。但隨著云實例成本和生態影響的不斷上升,正確地調整機器尺寸以處理預期負載而不過度調整非常重要,這樣可以最大程度地降低機器成本,同時減少其生態影響。了解應用程序的內存大小需求對于以最低運營成本實現最高性能至關重要。

我將向您展示如何使用垃圾收集器 (GC) 日志文件來確定應用程序所需的內存大小。借助Java運行時,我們可以依靠 GC 來清理不再使用的內存,并盡可能降低總內存量。在此過程中,GC 可以輸出包含大量信息的日志文件,這些信息可以幫助我們找到代碼中的問題并為我們的服務器或虛擬環境定義正確的尺寸。

如何測試您的應用程序

對您的應用程序進行現實世界測試中最難但最重要的部分是擁有可重復的負載模擬,該模擬類似于應用程序的實際使用情況。這是開發和部署應用程序的重要步驟,需要您的開發和 DevOps 團隊之間的合作。

您希望從這樣的測試中了解一些重要的結果:定義應用程序所需的內存量并測試最大吞吐量。以下是一些實現此目標的指南:

  • 慢慢來: 當執行 Java 應用程序時,JVM 會將最常用的字節碼(類文件)重新編譯為本地代碼。此過程需要一些時間(稱為預熱時間),因此您需要等待應用程序在您期望的典型負載下運行足夠長的時間。這意味著所有執行的代碼都已由施加在應用程序上的負載調用。
  • 注意本地測試: 一些測試可以輕松地在您自己的機器上執行,但請注意測試本身的負載。在運行應用程序的同一臺機器上執行負載測試會導致 CPU 和/或內存過載,從而影響測試中應用程序的性能。
  • 使用現實世界測試: 只有當您可以在類似于生產系統的環境中模擬預期負載時,測試才有效。
  • 在生產環境中測試: GC 日志對系統性能的影響很小。在許多情況下,與設置完整的測試環境相比,這將是獲取真實日志結果的更輕松、更便宜的解決方案。

使用 Spring PetClinic 進行實驗

我使用 Spring PetClinic 應用程序來收集本文的測試結果。源代碼可在 GitHub 上獲得,其中包括 JMeter 測試腳本。

運行測試應用程序

要遵循此方法,請獲取源代碼,編譯應用程序并使用以下命令啟動它:

# Get the sources
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic




# Generate a JAR and run it. Use CTRL+C to stop the application
$ ./mvnw package
$ java -Xlog:gc,safepoint:gc.log::filecount=0 -jar target/*.jar

您的應用程序現在已配置為將垃圾收集日志存儲在一個文件中。此設置非常適合此測試。但在生產環境中啟用 GC 日志時,您應該使用滾動文件以防止文件變得太大并填滿存儲空間。例如,使用-Xlog:gc,safepoint:gc.log::filecount=10,filesize=100M將日志輪換設置為最多 10 個文件,每個文件 100MB。當您未定義文件數量和文件大小時,默認值為 5 個文件,每個文件 20MB,因此 GC 日志不會使用超過 100MB 的空間。

關于 JMeter

Spring PetClinic 項目包含一個 JMeter 測試。可以使用 Apache JMeter 執行此類測試,Apache JMeter 是一個 100% 純開源 Java 應用程序,旨在對功能行為進行負載測試并衡量性能。它最初是為測試 Web 應用程序而設計的,但后來擴展到其他測試功能。查看最新版本(在jmeter.apache.org/download_jmeter.cgi上)并下載它。

$ cd ~/Downloads
$ wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip
$ unzip apache-jmeter-5.6.3.zip
$ rm apache-jmeter-5.6.3.zip

JMeter 測試可以使用 GUI 應用程序執行,但不建議這樣做,因為它會帶來 GUI 影響測試性能的風險。GUI 僅應用于創建測試或運行測試以驗證其配置。

使用 JMeter GUI 創建測試

啟動 Apache JMeter GUI 應用程序:

$ java -jar ~/Downloads/apache-jmeter-5.6.3/bin/ApacheJMeter.jar

  • 在 UI 中,單擊文件 > 打開,然后選擇文件spring-petclinic/src/test/jmeter/petclinic_test_plan.jmx。
  • 您可以通過點擊開始按鈕來執行測試以驗證配置,這將啟動線程來模擬 500 個用戶。
  • 運行測試直到測試完成?;顒泳€程數將從 500 降至 0。

圖片圖片

圖片圖片

圖片圖片

使用 JMeter 在無頭模式下運行負載測試

對于實際測試,我們將以無頭模式執行 JMeter。在我的情況下,我在運行應用程序的同一臺機器上執行測試,因為它有足夠的內存和 CPU 來處理兩者。使用相同方法時,您需要確保這對于您的測試有效。

讓我們運行一個測試并使用以下選項生成報告:

  • -n: 在無頭模式下運行(無 GUI)
  • -t: 要執行的.jmx測試腳本的路徑
  • -l: 用于存儲原始結果的.jtl文件的路徑
  • -o: 負載測試后生成報告儀表板的輸出文件夾的路徑,該文件夾必須為空目錄
  • -e: 負載測試后生成報告儀表板
$ java -jar ApacheJMeter.jar -n -t spring-petclinic/src/test/jmeter/petclinic_test_plan.jmx -l jmeter.jtl -o jmeter-report/ -e

當您不添加 -e 選項時,您仍然可以根據測試運行期間創建的.jtl文件稍后生成 HTML 報告。

  • -g: 測試期間生成的.jtl文件的路徑
  • -o: 用于存儲 HTML 報告的文件夾
$ java -jar ApacheJMeter.jar -g jmeter.jtl -o jmeter-report/

由于每個新的 Java 運行時版本都帶來了性能改進,因此了解您的生產系統使用哪個版本非常重要。我使用 Azul Zulu Builds of OpenJDK 版本 21.0.3 執行了我的測試。

$ java -version
#openjdk version "21.0.3" 2024-04-16 LTS
#OpenJDK Runtime Environment Zulu21.34+19-CA (build 21.0.3+9-LTS)
#OpenJDK 64-Bit Server VM Zulu21.34+19-CA (build 21.0.3+9-LTS, mixed mode, sharing)

閱讀 JMeter 報告

在 JMeter HTML 報告目錄(在我的情況下為jmeter-report/,如 -o 參數指定)中,您可以找到包含 JMeter 測試結果的網頁。您不會在這里找到任何與內存相關的信息,但會找到 JMeter 測試文件中定義的測試結果。例如:響應時間百分位數、每秒命中數的吞吐量等。

圖片圖片

圖片圖片

檢查 GC 日志結果

gc.log文件是了解應用程序內存使用情況的“最佳位置”。使用 Azul GC Log Analyzer,我們可以讀取此文件并可視化一段時間(掛鐘時間和正常運行時間)內的一組圖表,以檢查垃圾收集器、JIT(即時)編譯器、系統指標等。以下圖表顯示,垃圾收集器暫停持續時間在初始負載后保持在 10 毫秒以下,垃圾收集后的堆大小保持在 64MB 左右。我們建議您使用該值的雙倍來確定系統尺寸。因此,在這種情況下,應用程序將能夠處理與測試期間生成的相同負載,內存為 128MB。

圖片圖片

圖片圖片

您可以對您的應用程序遵循相同的原則,并在更改 Java 運行時的–Xmx設置或虛擬環境的內存配置后重新檢查暫停持續時間和堆使用情況。

Azul Zing 和 Zulu Builds of OpenJDK 之間的 GC 日志差異

通過不同的內部基準測試,我們創建了一些額外的日志文件來演示 Azul Zulu 和 Zing Builds of OpenJDK 版本 17 提供的不同結果。

使用 Zulu 的結果

當我們使用 Zulu(OpenJDK 的一個版本)生成 GC 日志時,我們在日志文件中獲得與大多數其他發行版相同的數據。以下圖表顯示,垃圾收集器暫停持續時間保持在 80 毫秒以下,垃圾收集后堆利用率保持在舊一代的 1GB 左右(用于長期對象)和新一代的 2GB 左右(用于臨時對象)。

在這個特定的測試用例中,總共-Xmx4G足夠并且實際上被使用,但通常標準建議是將-Xmx設置為觀察到的堆利用率的兩倍;在這里,它將是-Xmx6G。

圖片圖片

圖片圖片

圖片圖片

使用 Zing 的結果

我們使用 Zing 重復了相同的測試,Zing 是一種基于 OpenJDK 的替代 Java 運行時,但它具有更好的 JIT 編譯器(Falcon)和額外的垃圾收集器(C4,持續并發壓縮收集器)。

由于 C4 垃圾收集器提供的額外信息,圖表看起來略有不同。使用并發 GC 時,GC 在與應用程序并行活動時的并發持續時間是一個更重要的指標。它不會暫停應用程序,但會消耗一些 CPU 時間。100% 并不意味著它消耗了所有 CPU 時間的 100%,因為基準 100% 是 GC 線程的總數,這少于 CPU 內核的數量。但應通過增加堆大小來避免長時間保持在 100%。大多數時間通常由 GC 用于處理臨時對象。在這里,在這個特定的測試用例中,與具有相同-Xmx4G的 Zulu 相比,應用程序性能在 Zing 中仍然更好。

對于一般大小調整,Zing 的 Live Set 圖表也很重要,因為它顯示了活動對象的數量,例如,不包括未引用的對象,也稱為垃圾。

圖片圖片

圖片圖片

圖片圖片

結論

垃圾收集器日志提供了檢查應用程序需要多少內存的正確指標。能夠在與生產系統相同的環境中,以類似的負載測試應用程序至關重要。也許“在生產環境中測試”可能是實現這一目標的最簡單方法。

YOUTUBE.COM/THENEWSTACK技術發展迅速,不要錯過任何一集。訂閱我們的 YouTube 頻道以收看我們所有的播客、訪談、演示等。

責任編輯:武曉燕 來源: 云云眾生s
相關推薦

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-31 08:02:18

2024-02-02 11:03:11

React數據Ref

2024-01-18 09:38:00

Java注解JDK5

2024-01-19 08:25:38

死鎖Java通信

2023-05-29 07:43:32

JVM內存調優

2024-02-02 09:00:14

內存泄漏對象

2023-08-01 07:27:42

Mockito測試Callback

2025-06-20 09:57:42

2022-11-21 16:57:20

2024-09-30 08:01:44

2024-10-07 09:12:33

2022-11-08 08:45:30

Prettier代碼格式化工具

2022-04-26 08:10:33

MySQL存儲InnoDB

2024-10-31 09:15:09

2023-12-08 13:23:00

大數據MySQL存儲

2024-10-12 10:25:15

2024-08-19 10:24:14

2023-12-07 07:03:09

2023-12-27 07:31:45

json產品場景
點贊
收藏

51CTO技術棧公眾號

欧美国产欧美亚洲国产日韩mv天天看完整| 国产日产欧美一区| 欧美精品videos| 91黄色免费视频| 一区在线影院| 一区二区三区在线播| 成人区精品一区二区| 一级片视频在线观看| 日韩在线欧美| 日韩精品视频在线观看免费| 日本人视频jizz页码69| 激情在线视频播放| 欧美国产激情二区三区| 成人欧美一区二区三区视频xxx| 久久久黄色大片| 综合久久精品| 国产亚洲xxx| 黄色av电影网站| 国产第一亚洲| 岛国视频午夜一区免费在线观看| 亚洲一区精品视频| 色猫av在线| 国产另类ts人妖一区二区| 日本久久久久久久| 精品无码免费视频| 久久久久久久久久久9不雅视频| 亚洲激情小视频| 久久婷婷中文字幕| 天然素人一区二区视频| 精品久久久视频| 日本a级片在线观看| 欧美日韩视频精品二区| 国产.精品.日韩.另类.中文.在线.播放| 国产成人啪精品视频免费网| 国产在线观看成人| 亚洲欧美综合久久久| 一区二区三区久久精品| 懂色av粉嫩av蜜乳av| 538任你躁精品视频网免费| 欧美精品久久99久久在免费线| 免费激情视频在线观看| 伊人成综合网站| 五月天久久比比资源色| 九九久久九九久久| av在线下载| 中文字幕综合网| 小说区视频区图片区| 一本一道波多野毛片中文在线| 久久久精品免费网站| 国内精品二区| 天天操天天操天天| av在线播放一区二区三区| 成人永久免费| 亚洲精品国产精| 国产福利不卡视频| 91久久精品一区二区别| 精品人妻一区二区三区蜜桃| 国产寡妇亲子伦一区二区| 91网站免费看| 精品欧美一区二区精品少妇| 国产精品66部| 国产精品免费看一区二区三区| 亚洲av无码片一区二区三区| 国产成人亚洲综合a∨婷婷图片| 91影视免费在线观看| 国产丝袜在线视频| 国产高清不卡二三区| 99久久99久久| 日本激情一区二区| 26uuuu精品一区二区| 欧美资源一区| 暖暖日本在线观看| 亚洲精品国产成人久久av盗摄| 久久av喷吹av高潮av| 色呦呦在线看| 亚洲成人777| 女人另类性混交zo| 成人在线视频免费| 日韩欧美一级在线播放| 一本加勒比波多野结衣| 久久综合亚洲| 久久中文字幕在线| 国产精品第108页| 乱码第一页成人| 国产精品午夜视频| www.亚洲黄色| 久久精品无码一区二区三区| 亚洲欧洲精品在线观看| 青草在线视频| 色美美综合视频| 中文字幕资源在线观看| 中文字幕久久精品一区二区 | 日韩中文字幕网| 欧美日韩在线视频免费播放| 中文日韩欧美| 96精品久久久久中文字幕| 日日躁夜夜躁白天躁晚上躁91| 国产色产综合色产在线视频| wwwjizzjizzcom| 成人性生活视频| 91精品免费在线| 亚洲专区区免费| 欧美/亚洲一区| 国产成人涩涩涩视频在线观看 | 国产一区二区免费视频| 国产在线资源一区| 免费大片在线观看www| 婷婷开心激情综合| 992tv人人草| 免费视频国产一区| 欧美激情手机在线视频| 中文字幕欧美在线观看| 99精品国产视频| 在线观看免费黄色片| 成人免费看视频网站| 日韩一区二区电影网| 91夜夜揉人人捏人人添红杏| 国产在线不卡视频| 精品国产福利在线| 六月丁香婷婷激情| 婷婷视频一区二区三区| 国产亚洲精品激情久久| 精品无码久久久久久久久| 久久福利资源站| 日本在线一区| 爱啪啪综合导航| 欧美一二三四在线| 亚洲欧美卡通动漫| 美女视频一区免费观看| www.成人三级视频| av文字幕在线观看| 欧美午夜理伦三级在线观看| 少妇按摩一区二区三区| 亚洲国产婷婷| 国产伦理一区二区三区| 污视频在线免费观看网站| 欧美日韩国产高清一区二区三区| 亚洲午夜久久久久久久久红桃| 精品动漫3d一区二区三区免费| 91久久久久久久久久| 午夜在线观看视频| 欧美日韩在线播放三区四区| 少妇视频在线播放| 日韩精品一区第一页| 欧美亚洲免费高清在线观看| 无遮挡爽大片在线观看视频| 亚洲国产精品va在线观看黑人| 亚洲欧美一区二区三区四区五区| 久久91精品国产91久久小草| 一区二区三区久久网| 日韩免费在线电影| 日韩在线观看网站| 97人妻一区二区精品免费视频| 欧美激情在线看| 国产 porn| 欧美成人自拍| 成人自拍性视频| www免费在线观看| 精品嫩草影院久久| 日本少妇xxxx动漫| 91免费小视频| 中文字幕第80页| 日韩欧美在线中字| 91免费视频国产| 丁香花在线电影| 日韩精品999| 亚洲成人av网址| 日韩一区欧美小说| 欧美午夜精品一区二区| 亚洲三级观看| 欧美综合激情| 外国成人毛片| 久久人91精品久久久久久不卡| 免费看日韩av| 色婷婷综合久久久| 国产一区二区三区视频播放| 看片的网站亚洲| 一本大道东京热无码aⅴ| 超碰cao国产精品一区二区| 97视频在线看| 阿v免费在线观看| 91精品国产综合久久久久久| 久久婷婷综合国产| 国产日韩在线不卡| 在线免费观看av网| 亚洲少妇在线| 亚洲一区二区在线观| 91欧美极品| 国产精品91在线| 在线观看小视频| 亚洲精品视频中文字幕| 91久久精品无码一区二区| 亚洲午夜久久久久久久久久久| 日韩成人av一区二区| 蜜臀91精品一区二区三区| 黄色成人在线免费观看| 国产毛片一区二区三区| 99r国产精品视频| 欧美影视资讯| 欧美激情视频在线观看| 成人免费在线电影| 亚洲第一精品自拍| 97人妻人人澡人人爽人人精品| 欧美日韩精品在线视频| 强制高潮抽搐sm调教高h| 99久久久精品| 亚洲一区二区三区三州| 老司机精品久久| av网站手机在线观看| 欧美高清在线| 欧美日本韩国在线| 亚洲国产一区二区三区网站| 国产精品久久久久福利| 成入视频在线观看| 欧美另类交人妖| 素人av在线| 亚洲欧美精品一区二区| 日本xxxxwww| 欧美一区二区三区在线视频| 久久久久亚洲视频| 精品国产91久久久| 久久久综合久久| 亚洲欧美激情一区二区| 69视频在线观看免费| 97aⅴ精品视频一二三区| wwwxxxx在线观看| 国产一区中文字幕| 亚洲精品手机在线观看| 日韩不卡手机在线v区| 国产淫片免费看| 激情欧美一区| 国产 欧美 日本| 欧美在线视屏| 成年在线观看视频| 雨宫琴音一区二区三区| 一本一本a久久| 色97色成人| 色综合视频二区偷拍在线| 五月综合久久| 国产专区一区二区| 欧美激情极品| 久久国产一区| 欧美丝袜足交| 精品日韩欧美| 色综合久久中文| 久久av一区二区三区亚洲| 日本天堂一区| 欧美裸体网站| av一区二区在线播放| 日韩一区二区电影在线观看| 日本一区二区三区视频| 手机成人在线| 国产精品久久久久蜜臀 | 亚洲精品国产一区二| 日韩三级在线观看| 黄色小视频免费在线观看| 精品国产在天天线2019| 黄色一级a毛片| 日韩精品免费视频| 男男激情在线| 日韩在线观看你懂的| 91最新在线视频| 欧美激情精品久久久久久免费印度| 污污的网站在线看| 777午夜精品福利在线观看| 欧美××××黑人××性爽 | 18禁免费观看网站| 美女精品一区| 欧美丝袜在线观看| 成人手机电影网| 亚洲激情视频小说| 中文字幕精品—区二区四季| 香蕉久久久久久久| 成人欧美一区二区三区在线播放| 久久精品一本久久99精品| 青青草原亚洲| 精品裸体bbb| 国产日韩在线一区| 日本在线视频一区二区三区| 国产伦精品一区二区三区| 日韩a级大片| 神马影院一区二区三区| 亚洲精品极品少妇16p| 国产二区视频在线| 视频一区视频二区中文| 亚洲小视频网站| 成人黄色a**站在线观看| 欧美做受xxxxxⅹ性视频| 中文字幕一区二区三| 欧美日韩大片在线观看| 色婷婷av一区二区三区gif| 国产精品毛片久久久久久久av| 精品久久一二三区| 国产黄在线看| 欧美黑人极品猛少妇色xxxxx| 欧美aa在线观看| 91免费福利视频| 久久99国产精品视频| 91免费视频黄| 狂野欧美一区| 中文字幕无人区二| 国产欧美一区在线| 精品小视频在线观看| 欧美三级视频在线观看| 蜜桃视频久久一区免费观看入口| 国产一区二区三区日韩欧美| 肉肉视频在线观看| 国产精品久久久久久亚洲调教| 91夜夜蜜桃臀一区二区三区| 亚洲国产精品www| 99热在线精品观看| 手机看片国产精品| 国产欧美日韩三级| 日韩成人高清视频| 日韩一区二区在线看片| 高清av电影在线观看| 97视频在线观看免费| 亚洲香蕉久久| 日韩中文字幕一区二区| 日韩午夜电影| 好吊操视频这里只有精品| 中文字幕成人av| 日本一区二区免费电影| 欧美tickling挠脚心丨vk| 免费在线观看黄色网| 国产成人免费av| 亚洲激情77| 毛片在线视频播放| 成人在线综合网| 天天天天天天天天操| 欧美视频精品在线| 国产免费a∨片在线观看不卡| 91av在线不卡| 蜜桃久久久久| 91精品国产91久久久久麻豆 主演| 精品一区二区免费在线观看| 成年人在线免费看片| 欧美视频在线免费看| 天天色棕合合合合合合合| 久久久久久一区二区三区 | 国产色综合天天综合网| 精品国产一区二区三区久久久樱花 | 日韩a在线观看| 91精品国产高清久久久久久91| 奇米一区二区| 一区二区精品免费视频| 久久精品久久精品| 日本一二三不卡视频| 欧美午夜精品久久久久久孕妇| 欧美香蕉爽爽人人爽| 欧美最猛性xxxxx免费| 在线观看欧美理论a影院| 日本免费不卡一区二区| 91在线播放网址| 久久亚洲精品国产| 亚洲嫩模很污视频| 亚洲wwww| 亚洲精品高清国产一线久久| 蜜臀久久99精品久久久画质超高清| 免费网站在线高清观看| 欧美人xxxx| 18+激情视频在线| 99久久99久久| 国产精品日韩久久久| 摸摸摸bbb毛毛毛片| 欧美视频一区二区三区四区| 看黄网站在线| 超碰97网站| 国产人成精品一区二区三| 国产又黄又粗视频| 在线不卡中文字幕| 俄罗斯一级**毛片在线播放| 你懂的视频在线一区二区| 日韩精品电影在线| 日本黄色免费片| 日韩精品一区二区三区swag| 乱人伦视频在线| 色一情一区二区三区四区| 香蕉精品视频在线观看| 国产偷亚洲偷欧美偷精品| 波多野结衣在线电影| 中文字幕免费精品一区| 久久视频社区| 久草热视频在线观看| 国产视频一区不卡| 国产视频第一页| 97成人在线视频| 四虎成人精品永久免费av九九| 奇米777在线| 欧美日韩在线一区| 欧美一级二级三级区| 国产一区二区三区av在线| 免费成人av在线播放| 欧美精品一级片| 伊人成人开心激情综合网| 日韩视频一二区| www.欧美日本| 亚洲国产综合91精品麻豆| 国产中文字幕在线观看| 日韩日本欧美亚洲|