如何選取合適的 NewRatio 值來優化 JVM 的垃圾回收策略

目錄

一、垃圾回收模型簡介

(一)新生代(Young Generation)

(二)老年代(Old Generation)

(三)NewRatio 的作用與影響

(四)圖解:垃圾回收過程

1. 主要內容:

2. 簡單解釋

二、NewRatio 值的理論基礎

(一)NewRatio 的作用

1. 垃圾回收的頻率

2. 內存使用和效率

3. 性能調優

(二)NewRatio 計算公式與優化模型

1. NewRatio 計算公式

2. NewRatio 對垃圾回收的影響

2.1 Young GC 觸發的次數

2.2 對象晉升至老年代的時間

3. 優化策略中的公式

三、如何根據負載選擇 NewRatio 值

(一)高負載下的 NewRatio 配置

1. 頻繁的 Young GC 和其影響

2. Web 服務器和高并發應用的優化

(二)低負載下的 NewRatio 配置

1. 較低的垃圾回收頻率

2. 優化老年代回收

3. 適合批量任務和低內存消耗應用

(三)綜合考慮

五、實踐中的優化策略

(一)調整 NewRatio 提升 GC 性能

1. 頻繁 Young GC 的優化

2. Full GC 頻繁時的調優

(二)與其他垃圾回收參數聯合調優

1. CMS 收集器的優化

2. 調整堆內存大小與其他 GC 參數

(三)實際操作中的優化建議

六、總結


干貨分享,感謝您的閱讀!

Java 虛擬機(JVM)通過垃圾回收(GC)機制自動管理內存的分配和回收,以避免內存泄漏和溢出問題。隨著應用程序的復雜性和負載的增加,垃圾回收的效率變得尤為重要,特別是回收過程中停頓的時間。為了提高垃圾回收的效率,JVM 提供了多個調節參數,其中 NewRatio 值的配置是一個關鍵因素。

在垃圾回收策略中,NewRatio 控制著新生代與老年代的大小比例,這直接影響到垃圾回收的性能和停頓時間。本文將通過分析垃圾回收模型及其工作機制,探討如何選擇合適的 NewRatio 值,以優化垃圾回收的效果。

歷史主要基本文章回顧:

涉獵內容具體鏈接
Java GC 基礎知識快速回顧Java GC 基礎知識快速回顧-CSDN博客
垃圾回收基本知識內容Java回收垃圾的基本過程與常用算法_java垃圾回收過程-CSDN博客
CMS調優和案例分析CMS垃圾回收器介紹與優化分析案列整理總結_cms 對老年代的回收做了哪些優化設計-CSDN博客
G1調優分析Java Hotspot G1 GC的理解總結_java g1-CSDN博客
ZGC基礎和調優案例分析垃圾回收器ZGC應用分析總結-CSDN博客

從ES的JVM配置起步思考JVM常見參數優化

從ES的JVM配置起步思考JVM常見參數優化_es jvm配置-CSDN博客

深入剖析GC問題:如何有效判斷與排查

深入剖析GC問題:如何有效判斷與排查_排查java堆中大對象觸發gc-CSDN博客

動態擴縮容引發的JVM堆內存震蕩調優指南

動態擴縮容引發的JVM堆內存震蕩:從原理到實踐的GC調優指南

顯式 GC 的使用:留與去,如何選擇?

顯式 GC 的使用:留與去,如何選擇?

過早晉升的識別與優化實戰

Java垃圾回收的隱性殺手:過早晉升的識別與優化實戰

高效解決MetaSpace OOM 問題

深入剖析 MetaSpace OOM 問題:根因分析與高效解決策略
高頻面試題匯總JVM高頻基本面試問題整理_jvm面試題-CSDN博客

一、垃圾回收模型簡介

JVM 的垃圾回收大多采用的是分代收集(Generational Collection)模型。該模型將堆內存劃分為多個區域,通常分為三個主要部分:新生代(Young Generation)老年代(Old Generation)永久代(Permanent Generation,已被 Metaspace 替代)。每個區域的內存使用和垃圾回收策略不同,旨在提高內存回收的效率并減少停頓時間。

(一)新生代(Young Generation)

新生代用于存儲生命周期較短的對象。大多數對象會在這里分配內存,并且由于其生命周期較短,大部分對象在新生代內就會被垃圾回收。因此,新生代的垃圾回收操作(即 Young GC)通常非常頻繁。新生代的內存分配通常通過以下幾個區域來進行管理:

  • Eden 區:這是新生代中的主要區域,所有新創建的對象首先被分配到這里。
  • Survivor 區:新生代的內存分為兩個 Survivor 區,分別為 S0S1。當 Eden 區中的對象經歷一次垃圾回收后,還存活的對象會被復制到一個 Survivor 區,而另一個 Survivor 區則保持空閑。

新生代的垃圾回收采用的是 Minor GC,通常較為頻繁,但由于只涉及新生代的回收,所以停頓時間較短。

(二)老年代(Old Generation)

老年代用于存放生命周期較長的對象。當對象在新生代中存活了一定的時間,且超過了晉升閾值時,它們會被晉升到老年代。老年代的對象通常存活時間較長,因此它們的垃圾回收操作(即 Full GC)發生頻率較低,但一旦觸發,由于涉及的內存較大,停頓時間通常也較長。

  • 晉升機制:在垃圾回收過程中,一部分經過多次回收后仍然存活的對象將被從新生代晉升到老年代。通過這種機制,JVM 能夠優化內存的管理,減少頻繁的垃圾回收。

  • Full GC:當老年代的內存空間不足時,JVM 會觸發 Full GC,這將導致暫停應用程序的運行,直到垃圾回收完成。這是因為老年代的回收不僅會清理不再使用的對象,還可能需要進行內存壓縮。

(三)NewRatio 的作用與影響

Generational Collection 模型中,NewRatio 是一個關鍵的調節參數,它決定了新生代與老年代的大小比例。具體來說,NewRatio 定義了新生代內存大小與老年代內存大小的比例。通過調整 NewRatio 值,可以平衡新生代和老年代的內存分配,從而影響垃圾回收的行為和效率。

  • NewRatio = young:old:假設 NewRatio 為 2,那么新生代的內存將占總堆內存的 1/3,老年代的內存將占 2/3。較小的 NewRatio 會增大新生代的大小,反之,較大的 NewRatio 會增大老年代的大小。

  • 對垃圾回收的影響

    • 較小的 NewRatio 值意味著新生代較大,對象較容易晉升至老年代,從而減少了 Full GC 的頻率,但會增加 Young GC 的頻率。
    • 較大的 NewRatio 值則意味著老年代較大,新生代的對象晉升到老年代的速度較慢,從而減少了 Young GC 的頻率,但可能會導致 Full GC 更頻繁地發生,尤其是在內存壓力較大的情況下。

(四)圖解:垃圾回收過程

通過以下圖示,我們可以更直觀地理解 NewRatio 在垃圾回收中的作用。下圖展示了一個抽象的垃圾回收模型,采用了蓄水池模型的方式來解釋新生代和老年代之間的內存分配與回收過程。

這張圖展示了垃圾回收過程中的新生代(Young)和老年代(Old)的內存分配與回收情況,并以一個抽象的模型來解釋相關速度和比率。

1. 主要內容:

  • Young(新生代)
    • va:對象分配速率,即對象在新生代中創建的速率。
    • vp:對象晉升速率,指對象從新生代晉升到老年代的速率。
    • vyg:新生代垃圾回收速率,表示新生代區域回收對象的速率。
  • Old(老年代)
    • vog:CMS GC(Concurrent Mark-Sweep)回收速率,指老年代垃圾回收的速率。
    • rs:存活對象比例,指在老年代中存活的對象比例。
  • 比率與速度
    • r:表示新生代與老年代的比率,即 young:old 比率,影響內存分配及垃圾回收頻率。
    • Tg:Young GC的收集時間。
    • Tog:老年代垃圾回收(Full GC)的時間。
    • TP9999:指垃圾回收過程中最慢的回收時間,通常是回收性能的瓶頸。

2. 簡單解釋

  • 新生代:大部分對象創建和回收發生在這里。NewRatio(新生代與老年代的比率)決定了新生代的大小。如果NewRatio較小,新生代大,回收會頻繁;如果較大,老年代大,回收較少。
  • 老年代:存儲長生命周期的對象。Full GC觸發頻率較低,但回收時間較長,影響系統的停頓時間。

這張圖主要通過速率和比率的調節,幫助我們理解如何通過配置 NewRatio 來優化垃圾回收的效率和減少系統停頓。

二、NewRatio 值的理論基礎

NewRatio 是指新生代(Young Generation)大小與老年代(Old Generation)大小的比例。JVM 默認將其設置為 2,意味著新生代的內存大小是老年代的 1/2。例如,如果堆的總大小為 1GB,NewRatio = 2 時,新生代的大小為 333MB,老年代的大小為 667MB。如果將 NewRatio 設置為 3,則新生代的大小將是老年代的 1/3,即新生代為 250MB,老年代為 750MB。

(一)NewRatio 的作用

1. 垃圾回收的頻率

NewRatio 的配置直接影響到垃圾回收的頻率。較小的 NewRatio 值意味著新生代占用的內存較大,相應地,新生代中的對象較容易被晉升到老年代。這將導致老年代的壓力增大,從而減少 Full GC 的頻率,但卻可能導致 Young GC 的頻率增加。因為新生代較大,JVM 會更頻繁地對新生代進行回收。

  • NewRatio(新生代較大)會導致頻繁的 Young GC,但可能減少 Full GC 的發生。
  • NewRatio(新生代較小)可能導致較少的 Young GC,但老年代的壓力增大,可能會導致更多的 Full GC。

2. 內存使用和效率

合理的 NewRatio 值有助于優化內存的使用,確保新生代和老年代的內存比例適合應用的實際需求。如果新生代過大,會導致 Young GC 過于頻繁,進而增加應用的停頓時間;而如果新生代過小,老年代的壓力則會增大,容易導致 Full GC 頻繁觸發,影響性能。

  • 內存過度分配:設置不合適的 NewRatio 值會導致新生代或老年代的內存資源浪費。例如,如果新生代過小,可能無法容納短生命周期的對象,導致頻繁的 Full GC。
  • 優化內存使用:通過合適的 NewRatio 值,能夠平衡新生代和老年代的內存分配,避免過度分配或頻繁回收,提高內存的使用效率。

3. 性能調優

調整 NewRatio 值不僅能影響垃圾回收的頻率,還能控制垃圾回收停頓時間。由于新生代的垃圾回收主要是 Young GC,而老年代的回收則是 Full GC,不同的 NewRatio 設置會影響這兩者的停頓時間。

  • 停頓時間的平衡:如果 NewRatio 設置得較小,增加新生代的內存,可能會導致 Young GC 的頻率增大,停頓時間增加。反之,如果 NewRatio 設置較大,減少新生代的內存,可能會減少 Young GC 的頻率,但 Full GC 的停頓時間可能會增加。

  • 響應時間與吞吐量:合理配置 NewRatio 可以幫助提高應用程序的響應時間(減少垃圾回收時的停頓),同時提高吞吐量(減少由于 GC 引起的時間損失)。對于需要高吞吐量的應用程序,可能會選擇較小的 NewRatio,以減少 Full GC;對于需要低延遲的應用程序,則可能會選擇較大的 NewRatio,以減少 Young GC 的影響。

選擇合適的 NewRatio 值時,需要綜合考慮以下因素:

  1. 應用程序的內存使用模式:如果應用中有大量短生命周期的對象,較大的新生代可能更合適。反之,如果長生命周期對象較多,較小的新生代可能更適用。
  2. GC 的影響:較大的新生代會加大 Young GC 的頻率,較小的新生代則可能導致 Full GC 的頻繁觸發。需要根據應用的響應時間要求來調節。
  3. 性能需求:根據吞吐量或響應時間要求,調整 NewRatio 來平衡 Young GCFull GC 的影響。

NewRatio 的選擇是影響 JVM 性能的一個關鍵因素。通過合理地設置新生代和老年代的大小比例,可以有效地優化垃圾回收的頻率和停頓時間,從而提升應用程序的性能。根據應用程序的內存需求和性能目標,靈活調整 NewRatio 值是實現高效內存管理的有效策略。

(二)NewRatio 計算公式與優化模型

為了幫助開發者更好地理解 NewRatio 的配置,我們提供以下計算公式和優化模型:

1. NewRatio 計算公式

NewRatio 的值決定了新生代和老年代的比例。如果我們已知整個堆的大小 heapSize,以及新生代的大小 youngSize,那么可以通過以下公式計算新生代和老年代的比例:

從中,我們可以得到老年代的大小:

例如,假設整個堆的大小是 1 GB,NewRatio 設置為 2,則新生代的大小 youngSize 可以設置為:

老年代的大小則是:

2. NewRatio 對垃圾回收的影響

2.1 Young GC 觸發的次數

假設每次進行 Young GC 時,回收的對象數為 n,每個對象的大小為 s,那么觸發 Young GC 的次數 n_YGC 依賴于新生代的大小 youngSize

2.2 對象晉升至老年代的時間

如果新生代的空間不足,或者對象的生命周期較長,它們將晉升到老年代。晉升的時間 t_promotion 可以通過下式計算:

這里 v_{yg} 是 Young GC 的回收速度。

3. 優化策略中的公式

為了減少 Full GC 的觸發頻率,我們可以通過以下公式計算:

通過調整 NewRatio,我們可以優化老年代的大小,從而減少 Full GC 的觸發次數。

三、如何根據負載選擇 NewRatio 值

NewRatio 是 JVM 中調整新生代(Young Generation)和老年代(Old Generation)內存分配比例的關鍵參數。根據不同負載下的內存需求和垃圾回收行為,合理配置 NewRatio 可以顯著提高應用程序的性能,減少垃圾回收的影響。以下探討在高負載和低負載情況下,如何選擇適當的 NewRatio 值來優化系統的垃圾回收策略。

(一)高負載下的 NewRatio 配置

在高負載的應用場景中,特別是對于對象創建頻繁且生命周期較短的應用,如 Web 服務器、高并發的后臺服務或實時數據處理系統,系統中的新生代對象會迅速增加,導致 Young GC(新生代垃圾回收)頻繁觸發。在這種情況下,合理配置 NewRatio 是關鍵。

1. 頻繁的 Young GC 和其影響

高負載情況下,新生代的垃圾回收頻率較高,尤其是在對象創建速率較快時。過大的新生代可能會導致 Full GC 頻繁發生,從而影響應用程序的響應時間和吞吐量。為了減少 Full GC 的發生頻率,通常需要增大新生代的比例,即降低 NewRatio 值。

  • 減小 NewRatio:通過減小 NewRatio(例如將其設置為 1:1 或更小的比例),可以增大新生代的內存容量,減少新生代中的對象晉升到老年代的速度,從而減輕老年代的回收壓力。這樣一來,系統會更頻繁地觸發 Young GC,但由于新生代的內存空間較大, Young GC 的停頓時間不會過長,反而避免了老年代的 Full GC 頻繁發生。

2. Web 服務器和高并發應用的優化

在 Web 服務器或高并發場景中,系統的負載和請求量通常較大,導致對象在新生代中快速生成和回收。通過適當調節 NewRatio,可以減少 Full GC 的發生,確保服務器的穩定性和高吞吐量。設置 NewRatio 為 1:1 或更小的比例能夠確保新生代的內存足夠容納大量的短生命周期對象,從而降低老年代的壓力,并減少垃圾回收對系統響應的影響。

(二)低負載下的 NewRatio 配置

在低負載應用中,如批量任務處理、內存消耗較少的后臺服務或內存占用較低的應用,系統中的對象創建和銷毀速度較慢,且新生代的內存需求相對較低。在這種情況下,過大的新生代反而會浪費寶貴的內存資源。因此,選擇較高的 NewRatio 值可以提高內存的利用效率,優化垃圾回收的整體性能。

1. 較低的垃圾回收頻率

在低負載下,由于對象創建速率較低,Young GC 的頻率通常較少。此時,為了避免新生代內存的過度分配,可以選擇較高的 NewRatio 值。例如,設置 NewRatio 為 4:1 或更高,這樣新生代的內存占總堆內存的比例較小,能夠減少新生代的內存分配,從而避免頻繁的 Young GC。

2. 優化老年代回收

增加 NewRatio 值,意味著減少新生代的大小,增加老年代的相對比例。這在低負載場景下尤其重要,因為老年代的回收相對較少,內存壓力較小。較大的老年代可以降低 Young GC 發生的頻率,減少晉升到老年代的對象,從而使得老年代能夠保持較長時間的穩定性,避免不必要的內存回收操作。

3. 適合批量任務和低內存消耗應用

對于批量任務處理或內存消耗較少的應用程序,較高的 NewRatio 設置能夠提高內存使用效率,減少不必要的垃圾回收。通過調整新生代和老年代的比例,能夠降低垃圾回收對系統性能的影響,優化長時間運行時的內存消耗。

(三)綜合考慮

選擇合適的 NewRatio 值時,應根據以下幾個因素綜合決策:

  1. 負載水平:高負載下,新生代壓力較大,需要減少老年代的回收壓力,從而可以降低 NewRatio;低負載下,通過增加 NewRatio 來優化內存的分配,減少新生代的浪費。
  2. 垃圾回收頻率:頻繁的 Young GC 在高負載下可能導致性能瓶頸,而低負載下的老年代回收則相對較少,需要在此基礎上調整內存分配。
  3. 應用類型與內存需求:Web 服務器、高并發系統等應用需要較頻繁的 GC,但也要避免 Full GC;而批量任務處理等內存消耗較小的系統則需要優化內存分配以減少不必要的 GC 開銷。

通過精確配置 NewRatio 值,可以在不同負載下有效地平衡新生代和老年代的內存分配,減少垃圾回收的影響,從而優化系統的性能。

五、實踐中的優化策略

在實際應用中,垃圾回收(GC)的性能優化是一個不斷調整和實驗的過程。通過合理配置 NewRatio 參數,結合其他垃圾回收相關設置,開發者能夠有效減少垃圾回收的停頓時間,提升系統吞吐量。

(一)調整 NewRatio 提升 GC 性能

1. 頻繁 Young GC 的優化

當應用程序中對象創建頻繁且生命周期較短時,新生代的垃圾回收(Young GC)將變得異常頻繁。過頻繁的 Young GC 會導致停頓時間積累,從而影響應用的響應時間和吞吐量。在這種情況下,增大新生代的比例,即減小 NewRatio,能夠有效減少 Full GC 觸發的頻率,從而減少對老年代的壓力。

優化策略:

  • 減小 NewRatio:通過減少新生代和老年代的比例,使新生代更大,允許更多的短生命周期對象在新生代中分配。這能夠降低對象晉升到老年代的速率,從而減少 Full GC 的發生。
  • 提升新生代空間:增大新生代內存空間會減緩對象晉升至老年代的速度,從而有效降低老年代的壓力,使得老年代能承載更多的對象,避免觸發頻繁的 Full GC。

例如,在高并發應用或 Web 服務器中,增大新生代的比例(如 NewRatio = 1:1)有助于應對大量短生命周期對象的創建和銷毀,減少因老年代內存壓力過大而引發的 Full GC。

2. Full GC 頻繁時的調優

當老年代的內存空間不足時,JVM 會觸發 Full GC,這通常會導致較長時間的應用停頓。頻繁的 Full GC 表示老年代的內存壓力過大,可能是因為老年代空間配置不足,或者新生代對象過早晉升到老年代。

優化策略:

  • 增大老年代內存空間:如果發現 Full GC 頻繁發生,可以適當增大老年代的內存比例。通過調整 NewRatio,減少新生代內存的比例,從而為老年代分配更多的內存空間。這有助于減少老年代頻繁回收的頻次,避免頻繁觸發 Full GC。
  • 適當調整堆內存大小:如果老年代內存仍然不足,可以通過增加堆內存總大小來為老年代提供更大的空間,從而減少 Full GC 的發生頻率。

例如,在處理長生命周期對象(如緩存、數據庫連接池等)的應用程序中,可以選擇適當增大 OldRatio,從而優化老年代的內存使用,避免 Full GC 頻繁影響性能。

(二)與其他垃圾回收參數聯合調優

JVM 提供了多個垃圾回收相關參數,合理配置它們與 NewRatio 配合使用,可以進一步優化垃圾回收策略,從而提高系統性能。

1. CMS 收集器的優化

在使用 CMS(Concurrent Mark-Sweep) 收集器時,NewRatio 參數與 CMS 的回收速度、Young GC 的回收速度、老年代的回收策略等參數密切相關。優化這些參數的配合,能夠有效減少長時間停頓并提高系統的吞吐量。

優化策略:

  • 調整 NewRatio 與 CMS 回收速度的配合:當 NewRatio 設置較小(即新生代較大)時,系統會頻繁觸發 Young GC,這可以使 CMS 的并發標記階段得到更充分的運行,從而減少 Full GC 的概率。
  • 配合調整 CMS 參數:在 CMS 中, Young GC 的回收速度(v_yg)與新生代的大小直接相關。通過調整 NewRatio 和 CMS 的 InitiatingHeapOccupancyPercent 參數,可以避免老年代過早進入標記階段,減少 Full GC 的發生頻率。

2. 調整堆內存大小與其他 GC 參數

堆內存大小與 NewRatioOldRatio 的配置密切相關。合理的堆內存配置能確保內存資源得到充分利用,從而避免不必要的 GC 操作。適當的內存配置不僅能優化垃圾回收,還能提高應用程序的響應能力。

優化策略:

  • 合理配置堆內存大小:根據應用的內存需求,調整堆內存的大小,確保足夠的內存供新生代和老年代使用。通常來說,如果堆內存過小,可能會導致頻繁的 Full GC;如果堆內存過大,則可能會浪費資源,降低內存使用效率。
  • 結合 GC 參數優化:例如,通過設置 -XX:MaxGCPauseMillis 來限制最大 GC 停頓時間,結合 NewRatio 配置,確保 GC 操作能夠在合理的時間范圍內完成,從而減少對應用性能的影響。

(三)實際操作中的優化建議

在實際操作中,調整 NewRatio 和其他參數時,應該遵循以下幾個建議:

  1. 逐步調整:垃圾回收的調優通常需要在生產環境中進行逐步測試。調整 NewRatio 或其他 GC 參數后,應通過性能測試來評估調整對系統響應時間和吞吐量的影響。
  2. 監控與分析:使用 JVM 提供的監控工具(如 JConsole、GC日志分析工具等)來分析垃圾回收行為,查看 NewRatio 調整后的影響,及時進行優化。
  3. 負載測試:在高負載和低負載情況下進行負載測試,觀察不同 NewRatio 設置對系統性能的影響,選擇最佳的配置。

通過合理配置 NewRatio 值,結合其他垃圾回收參數,可以顯著提升 JVM 的垃圾回收效率,減少停頓時間,優化內存使用,進而提升應用程序的性能。在高負載和低負載環境下,不同的 NewRatio 設置對系統的影響是不同的,需要根據實際需求進行調整。同時,與其他 GC 參數的聯合優化也是提高系統性能的重要策略。

六、總結

本文深入探討了 NewRatio 在 Java 虛擬機(JVM)垃圾回收策略中的重要作用,并結合理論基礎、負載調整、實踐中的優化策略,提供了如何通過調整 NewRatio 來提高垃圾回收效率和優化系統性能的全面指導。主要結論包括:

  1. NewRatio 與垃圾回收性能的關系NewRatio 控制了新生代和老年代的內存分配比例,直接影響垃圾回收的頻率和停頓時間。較小的 NewRatio 值增大新生代,有助于減少老年代的壓力,減少 Full GC 的觸發頻率,但會增加 Young GC 的頻率;較大的 NewRatio 值則相反,可能導致 Full GC 更頻繁發生。

  2. 根據負載調整 NewRatio:在高負載環境中,適當減小 NewRatio,增加新生代的內存,以減少 Full GC 的發生,保證應用的高吞吐量;而在低負載環境中,增加 NewRatio 值能夠優化內存利用效率,減少新生代的浪費,避免不必要的垃圾回收。

  3. 實踐中的調優:合理配置 NewRatio 值,并與其他垃圾回收相關參數(如 CMS、堆內存大小等)配合使用,可以顯著優化垃圾回收效率,減少停頓時間。調整過程中應通過性能測試、監控工具和負載測試來評估調優效果,并根據實際需求持續優化。

  4. 優化策略的綜合性:垃圾回收優化不僅僅依賴于單一的參數配置,而是需要結合系統的內存需求、負載類型以及性能目標,靈活調整多個參數(如 NewRatioCMS 收集器參數、堆內存大小等),形成合適的垃圾回收策略。

總之,垃圾回收性能的優化是一個持續的過程,需要通過精確配置參數、綜合考慮應用場景和負載情況,不斷地進行調優和測試。合理選擇并調整 NewRatio,不僅能夠提升 JVM 的性能,減少停頓時間,還能有效地優化內存使用,提升應用程序的響應速度和吞吐量,為高效的內存管理奠定基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72024.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Element Plus中的樹組件的具體用法(持續更新!)

const defaultProps {//子樹為節點對象的childrenchildren: children,//節點標簽為節點對象的name屬性label: name, } 屬性 以下是樹組件中的常用屬性以及作用: data:展示的數據(數據源) show-checkbox:節點是否可…

第十一屆藍橋杯單片機國賽

什么?4T模擬賽和省賽做起來輕輕松松?不妨來挑戰一下第十一屆國賽,這一屆的國賽居然沒考超聲波、串口通信!只要你正確地理解了題目的意思,規避出題人挖的坑,拿個國一輕輕松松。 附件:第十一屆藍橋…

大彩串口屏開發 —— MODBUS通信

目 錄 Modbus通信方式 1 使用變量與協議設置方式 2 使用LUA腳本方式 3 兩者結合 Modbus通信 大彩串口屏可以采用三種方式實現與其它設備進行modbus通信和邏輯處理。 方式 1 使用變量與協議設置 步驟1 在協議設置里進行設置,包括開啟modbus協議,屏做為主…

【Linux docker】關于docker啟動出錯的解決方法。

無論遇到什么docker啟動不了的問題 就是 查看docker狀態sytemctl status docker查看docker日志sudo journalctl -u docker.service查看docker三個配置文件(可能是配置的時候格式錯誤):/etc/docker/daemon.json(如果存在&#xf…

怎么實現: 大語言模型微調案例

怎么實現: 大語言模型微調案例 目錄 怎么實現: 大語言模型微調案例輸入一個反常識的問題:首都在北京天安門之后對輸出模型進行測試:首都在北京天安門微調代碼:測試微調模型代碼:微調輸出模型結構輸出模型參數大小對比Qwen 2.5_0.5:53MB輸出模型:951MB 是一樣的,沒有進行…

rdiff-backup備份

目錄 1. 服務器備份知識點 1.1 備份策略 1.2 備份步驟和寶塔面板簡介 1.3 CentOS7重要目錄 2. 備份工具 2.1 tar -g 備份演示 2. rsync 備份演示 3. rdiff-backup 備份演示 4. 差異和優缺點 3. rdiff-backup安裝和使用 3.1 備份命令rdiff-backup 3.2 恢復命令--…

Claude:AI領域的多面手,從語言模型到智能編碼

文章目錄 引言Claude的起源與發展1. Claude的誕生2. Claude 3.7 Sonnet的突破 版本迭代技術原理Claude的獨特優勢混合推理模式成本與性能的平衡開發者友好的工具 功能及應用Claude的未來展望結論 引言 Claude是由Anthropic公司開發的大型語言模型,在人工智能領域&a…

RocketMQ 詳細教程(Spring Boot Spring Cloud Alibaba)

1. RocketMQ 簡介 RocketMQ 是阿里巴巴開源的一款分布式消息隊列,具有高吞吐量、低延遲、可靠性等特點,廣泛應用于金融、電商、物聯網等領域。 RocketMQ 的核心特性: 高可靠性:支持消息存儲、重復消費、失敗重試等高可用性&…

Spring(七)AOP-代理模式

目錄 代理模式 一 靜態代理 一、核心作用 二、使用場景 二 動態代理 一、核心作用 二、使用場景 具體實現:(初始) 具體實現:(改進) 一、核心業務邏輯 1. 接口 MathCalculator 2. 實現類 MathCa…

Java Lambda表達式:現代編程的簡潔之道

引言 在Java 8中,Lambda表達式的引入標志著Java語言向函數式編程邁出了重要一步。Lambda不僅簡化了代碼結構,還提升了開發效率,使得Java能夠更靈活地應對現代編程需求。本文將深入探討Lambda表達式的核心概念、語法規則、應用場景及其對Java…

BGP分解實驗·21——BGP選路原則之本地優先級

當使用BGP路徑屬性——本地優先級,進行路由優選時,優選“本地優先級”數值較大的那個。(eBGP之間更新不攜帶這個屬性) 實驗拓撲如下: 在未實現本地優先級策略前,先在各個BGP之間配置完成基本連接。 R1的基…

【redis】應用場景:共享會話和手機驗證碼

文章目錄 共享會話實現思路 手機驗證碼實現思路偽代碼實現生成驗證碼驗證驗證碼 共享會話 實現思路 如果每個應用服務器,維護自己的會話數據,此時彼此之間胡共享,用戶請求訪問到不同的服務器上,就可能會出現一些不能正確處理的情…

通義萬相 2.1 + 藍耘算力,AI 視頻生成的夢幻組合

在這個科技日新月異的時代,人工智能不斷刷新著我們對世界的認知。一次偶然的機會,我借助北京藍耘科技股份有限公司提供的算力支持,踏上了使用通義萬相 2.1 進行 AI 視頻生成的奇妙之旅。 目錄 1.1初遇藍耘科技: 1.2通義萬相 2.1…

【Go萬字洗髓經】Golang內存模型與內存分配管理

本文目錄 1. 操作系統中的虛擬內存分頁與進程管理虛擬內存與內存隔離 2. Golang中的內存模型內存分配流程內存單元mspan線程緩存mcache中心緩存mcentral全局堆緩存mheapheapArena空閑頁索引pageAlloc 3. Go對象分配mallocgc函數tiny對象分配內存 4.結合GMP模型來看內存模型tiny…

33.HarmonyOS NEXT NumberBox 步進器高級技巧與性能優化

HarmonyOS NEXT NumberBox 步進器高級技巧與性能優化 一、高級交互設計 1. 組件聯動控制 // 與Slider雙向綁定 State value: number 50Slider({value: this.value,onChange: (v) > this.value v })NumberBox({value: this.value,onChange: (v) > this.value v })2. …

關于ModbusTCP/RTU協議轉Ethernet/IP(CIP)協議的方案

IGT-DSER智能網關模塊支持西門子、倍福(BECKHOFF)、羅克韋爾AB,以及三菱、歐姆龍等各種品牌的PLC之間通訊,支持Ethernet/IP(CIP)、Profinet(S7),以及FINS、MC等工業自動化常用協議,同時也支持PLC與Modbus協議的工業機器人、智能儀…

通義萬相2.1 × 藍耘智算:AIGC 界的「黃金搭檔」如何重塑創作未來?

在人工智能生成內容(AIGC)領域,通義萬相2.1與藍耘智算的結合,正以技術協同效應重新定義創作的可能性。這一組合不僅突破了傳統創作工具的效率瓶頸,更通過算法與算力的深度融合,為影視、廣告、游戲、教育等領…

【FreeRTOS】FreeRTOS操作系統在嵌入式單片機上裸機移植

目錄 一 RTOS概述 二 FreeRTOS移植 三 FreeRTOS使用 四 附錄 一 RTOS概述 先了解一些基礎概念,以下內容摘自FreeRTOS官網(FreeRTOS? - FreeRTOS?): 【1】RTOS基礎知識 實時操作系統 (RTOS) 是一種體積小巧、確定性強的計算機…

文件包含漏洞第一關

一、什么是文件包含漏洞 1.文件包含漏洞概述 和SQL注入等攻擊方式一樣,文件包含漏洞也是一種注入型漏洞,其本質就是輸入一段用戶能夠控制的腳本或者代碼,并讓服務端執行。 什么叫包含呢?以PHP為例,我們常常把可重復使…

瑞芯微RK3576(1)-硬件設計

過年期間,趁著放假時間做了一款3576的核心板 方案是2G DDR432G emmc 引出所有IO口 關于接口方面,考慮了一段時間,最終決定使用BTB的模式,主要是能夠出更多的IO,方便拆卸,最讓我擔心的是BTB的位置問題 為了…