Originallink:https://www.coolapk.com/…
— In verschiedenen Beiträgen sehen wir oft Kommentare wie: "Es ist normal, mehr Speicher zu verbrauchen; Gedächtnis ist für den Gebrauch gedacht. Warum hast du noch so viel Speicher beim Streamlining?" Das ist seine Bemerkung. Diese Aussagen mangelt mehr oder weniger an Strenge. Im Folgenden versuche ich, eine einfachere Beschreibung zu verwenden, um dir ein Gefühl von dir selbst zu gebenMobiltelefone的Speicherverwaltung(Hauptsächlich virtuelles Gedächtnis) Ich habe ein grundlegendes Verständnis, und es ist das erste Mal, dass ich für einen Neuling schreibePopulärwissenschaftliche WissenschaftFalls es Fehler gibt, weist sie bitte im Kommentarbereich darauf hin.
————— Trennlinie—————
Hinweis: Der in diesem Artikel erwähnte "Speicher" bezieht sich auf das, was viele gemeinhin als "laufenden Speicher" bezeichnen, also "RAM", nicht auf Speicherplatz!
————— Trennlinie—————
Zuerst lernen wir einige Konzepte und Fachbegriffe kennen
1. Virtueller Speicher:
Virtueller Speicher ist eine Art der Speicherverwaltung, die häufig in modernen Betriebssystemen verwendet wirdTechnologieDerzeit ist die gängige Methode das seitenbasierte virtuelle Speichermanagement, das auf Seiten basiert (meist4KB) Verwaltet Speicherzuweisung, Recycling und Swapping mit minimaler Granularität.
2.SWAP:
SWAP ist ein Teil der virtuellen Speichertechnologie, bei der Speicherplatz auf der Festplatte geteilt wird, um Speicherseiten auszutauschen – einfach gesagt: Daten vom Speicher auf die Festplatte zu verschieben, um physischen Speicher freizumachen. Windows hat auch eine ähnliche Funktion namens "Paginierte Datei". Aber im Gegensatz zu Linux ist Windows stark auf paginierte Dateien angewiesen, und das Ausschalten davon verursacht dasGroße ProblemeFür Details siehe das zusätzliche Kapitel am Ende dieses Artikels.
3.ZRAM:
ZRAM ist eine weitere Implementierung von SWAP. Anstatt Festplattenspeicher zu verwenden, partitioniert es den Speicherplatz direkt, um Speicherseiten zu tauschen, wobei Kompressionsalgorithmen wie LZ4/ZSTD verwendet werden, um Speicherdaten zu komprimieren und so physischen Speicher freizumachen.
4.ZRAM Writeback
ZRAM Writeback ist eine Erweiterung von ZRAM. Wie SWAP erstellt es Swap-Dateien auf dem Festplattenspeicher, um Speicherseiten zu swappen. Der Unterschied besteht darin, dass ZRAM Writeback komprimierte Speicherdaten austauscht. Schreibsteuerungslogik läuft auf der Benutzerschicht statt im Kernel, und die spezifische Strategie wird vom Systemanbieter bestimmt, daher wird dieser Artikel nicht darauf eingehen.
5. Direktes Recycling und asynchrones Recycling
Es gibt zwei Arten der Speicherwiederherstellung: Asynchrone Sammlung läuft auf dem Hintergrundthread und beeinflusst den aktuellen Prozess nicht, was wenig Einfluss auf Leistung und Flüssigkeit hat, aber die Sammelgeschwindigkeit ist langsam; Die direkte Rückgewinnung erfolgt schnell, blockiert jedoch den aktuellen Prozess, wodurch die Softwareoberfläche für kurze Zeit (meist sehr kurz) einfriert, was die Leistung und Flüssigkeit erheblich beeinträchtigt.
————— Trennlinie—————
Zuerst beantworten wir die Frage im Titel: "Je mehr Speicher du benutzt, desto besser?" Ist diese Aussage korrekt? Ja, aber nicht ganz.
Speicher wird tatsächlich genutzt, aber es ist wichtig zu wissen, dass Speicher nicht nur vom Betriebssystem und der Benutzersoftware genutzt wird; ein weiterer wichtiger Faktor ist das Cachen von Dateien. Fast alle Betriebssysteme verfügen über Dateispeichermechanismen. Dateien, die von Festplatten oder Flash-Speicher gelesen werden, werden im Speicher gespeichert, daher rufen Sie beim nächsten Mal den Dateicache direkt auf, ohne von der Festplatte/Flash zu lesen, um den Prozess zu beschleunigen. Wenn der Speicher unzureichend ist, können Dateicaches schnell zur Zuweisung freigegeben werden, sodass sowohl der schnell wiedergewonnene als auch der freie Speicher vom Kernel als "verfügbarer Speicher" behandelt werden. Aber was man in der System-Backend-Schnittstelle und verschiedenen Programmen (wie DEV Check) sieht, ist kein "freier Speicher", sondern "verfügbarer Speicher", berechnet vom Kernel oder den eigenen Algorithmen der Software.
Wie auf dem Bild zu sehen, befindet sich der Kernel im MemiIn NFOs ≠ "verfügbarer Speicher" "freier Speicher": "Freier Speicher" bezeichnet unzugeordneten Speicher, der tatsächlich von keinem Prozess oder Dateien belegt wird, während "verfügbarer Speicher" Speicher bezeichnet, der zugewiesen werden kann (seine Größe ist eine Schätzung, die hauptsächlich durch den Teil des Dateicaches und des freien Speichers oberhalb des Low-Wasserzeichens und anderer Speicherelemente bestimmt wird, die schnell wiederhergestellt werden können)

Datenquelle: /proc/meminfo
Selbst wenn im Systemhintergrund oder in verschiedenen Apps viel Speicher übrig ist, heißt das nicht, dass der Speicher voll ausgelastet wird. Stattdessen haben sie es gestrafftOptimierungFür diejenigen wie mich versuche ich, den eigenen Speicherverbrauch des Systems zu reduzieren, damit mehr Speicher für die Nutzer freigesetzt werden kannAnwendungDies steht nicht im Widerspruch zu der Auffassung, dass "mehr Speicher zu verwenden normal ist; Speicher ist für die Nutzung gedacht."
————— Trennlinie—————
VorwärtsTutorial— Steuerung von Speicherrecycling- und ZRAM-Initiativen:
BesitzROOTDu kannst die unten stehenden Kernel-Parameter ändern, um die Speicherwiederherstellung und ZRAM-Aktivitäten zu steuern.
1. vm.watermark_scale_factor:
Kontrollieren Sie das Intervall zwischen den Speicherwasserniveau-Leitungen mit einem Anpassungsbereich von 1~1000 (entsprechend 0,01 % bis 10 % der gesamten Speichergröße). Ist der Wert zu niedrig, führt das häufig zu direktem RecyclingVerzögerungIst der Wert zu groß, wird Speicher verschwendet. Es wird empfohlen, ihn auf 100 (1 % des gesamten Speichers) zu setzen.
Der Kernel definiert drei Wassermarkenzeilen: min/niedrig/hoch. Wenn freier Speicher (Anmerkung: "freier Speicher" statt "verfügbarer Speicher") unter den niedrigen Wasserwert fällt, weckt der Kernel kswapd auf, um asynchron Speicher zurückzugewinnen (Daten zu ZRAM/SWAP zu tauschen und Dateicaches zurückzugewinnen), bis freier Speicher die hohe Wassermarke überschreitet; Wenn der ungenutzte Speicher unter den Mindestwasserstand fällt, wird eine direkte Wiederherstellung ausgelöst. Der Wert der Min-Wasserstand-Linie wird vom Kernel basierend auf der Gesamtspeichergröße und vm.min_free_kbytes Berechnung berechnet. Es wird nicht empfohlen, diesen Parameter zu ändern und den Standardwert beizubehalten.
2. vm.extra_free_kbytes:
Zusätzlich reservierter Speicher hat einen festgelegten Wert zwischen Min- und Low-Wasserzeichen. Ist der Wert zu niedrig, löst dies häufig eine direkte Rückgewinnung aus und verursacht Verzögerungen; ist es zu groß, verschwendet er Speicher. Es wird empfohlen, ihn auf 1~2 % der Gesamtspeichergröße zu setzen, gemessen in KB.
3. vm.swappiness:
Wenn der Kernel-Speicher unzureichend ist (unterhalb des niedrigen Schwellenwerts), liegt die Vorspannung zwischen der Swap-Seite und ZRAM/SWAP sowie dem wiederhergestellten Dateicache von 0~200 und bei älteren Kerneln von 0~100. Je kleiner der Wert, desto wahrscheinlicher ist es, dass Dateicaches gesammelt werden; je größer der Wert, desto wahrscheinlicher ist es, ZRAM/SWAP zu verwenden.
Die oben genannten Kernelparameter sind verfügbarSceneSie können auch Root-Rechte nutzen, um folgende Befehle auszuführen, um sie zu ändern:
echo 100 >/proc/sys/vm/watermark_scale_factor
echo 131072 >/proc/sys/vm/extra_free_kbytes
echo 100 >/proc/sys/vm/swappiness

– Wenn du mehr Backend behalten möchtest, kannst du den Wert von extra_free_kbytes und watermark_scale_factor reduzieren und den Wert von Swappiness moderat erhöhen.
– Wenn du eine höhere Glattigkeit möchtest, kannst du die extra_free_kbytes- und watermark_scale_factor-Werte erhöhen und gleichzeitig die Wechselwirkung auf einen ausgewogeneren Wert anpassen.
– Wenn du beides willst, dann besorg dir ein Handy mit größerem Speicher
————— Trennlinie—————
LMK und Backstage-Töten:
Ab Android 9 begann Google, den integrierten LMK-Kernel zugunsten von LMKD aufzugeben, das als Daemon für das System läuft. Daher haben das Killing von Hintergrund-Apps und der Kernel selbst wenig mit der Herangehensweise der jeweiligen Hersteller zu tunKonfigurationLMKD/Führte weitere Mechanismen zur Hintergrundentfernung ein. Bezüglich diesesMIUINeben der Konfiguration von LMKD gibt es Hintergrund-Killing-Code sowohl in "Battery and Performance" als auch in "Framework System Framework". Wenn du den vom Hersteller eingeführten zusätzlichen Hintergrund-Kill-Mechanismus nicht nutzen möchtest und LMKD selbst konfigurieren möchtest, ist das eine gute OptionLSPosedDas Modul "AppRetention" blockiert den Mechanismus zur Eliminierung von Hintergrundenden des Anbieters.

Dann konfigurieren Sie LMKD gemäß der Google-Dokumentation:Sehen Sie sich den Link an

————— Trennlinie—————
Zusätzlicher Abschnitt — Zusätzliches Wissen über die Pagefile.sys von Windows-Paging-Dateien und die Zuweisung virtueller Speicheradressen:
Windows verwendet eine zweistufige Speicherzuweisung (reserviert + Commit), und während der Commit-Phase ist es unerlässlich, die Abbildung physischer Adressen (physischer Speicher oder Paging-Dateien) sicherzustellen. Paging-Dateien sind Teil der Systemabgabegrenzen und bestimmen direkt die Gesamtmenge des virtuellen Speichers, die das System unterstützen kann (auf der Windows-Task-Manager-Speicherkartenseite gibt es ein Datenelement namens "Committed"; die linke Seite des Schrägstrichs ist die Summe aller angeforderten Programmspeichergrößen, die rechte Seite ist die gesamte virtuelle Speichergröße, mit Werten = physischer Speichergröße + Paging-Dateigröße, wobei die Paging-Datei dynamisch vom System partitioniert wird).

Speicherinformationen für den Windows-Task-Manager
Man kann sich einfach vorstellen, dass das System, wenn ein Programm eine bestimmte Speichermenge auf Windows zulässt, die entsprechende physische Adressgröße dem Programm zuweist. Nach der Zuweisung können andere Programme diesen Speicherplatz nicht mehr nutzen, und der vom Programm zugewiesene Speicher ist in der Regel höher als das, was es tatsächlich benötigt. Daher kann es beim Schließen von Paging-Dateien Fälle geben, in denen noch viel physischer Speicher übrig ist, aber beim Öffnen eines neuen Programms trotzdem der Speicher unzureichend ist. Linux hat dieses Problem jedoch nicht. Linux verwendet eine verzögerte Allokationsstrategie, bei der physische Speicheradressen nur dann zugewiesen werden, wenn Prozesse tatsächlich auf den Speicher zugreifen. Was den vom Programm angeforderten Speicher betrifft, so hat Linux "reale" virtuelle Adressen zugewiesen, und die Grenzen der virtuellen Speicheradressen werden durch die "vm.overcommit_memory"-Kernelparameter bestimmt. Bei Android-Handys, die wir verwenden, beträgt das Limit für die virtuelle Speicherzuweisung "overcommit_memory". Der Standardwert ist 1, was virtuelle Speicherbeschränkungen ignoriert und die Zuweisung aller physischen Speichers ermöglicht.
Auf der SWAP-Management-Seite von Scene sieht man, dass alle Prozesse auf meinem Handy bis zu 208 GB Speicher angefordert haben! Aber der physische Speicher war nicht verbraucht, sodass ich trotzdem neue Software öffnen konnte.

Warum Windows nicht auf denselben oder einen ähnlichen Mechanismus wie Linux umstellt, weiß ich nicht; ich denke nur, dass es daran liegt, dass Windows zu viel historische Belastung trägt (entsprechend der legendären Kompatibilität von WIN).
![[Open Source Lesung] November 950+ sorgfältig Korrektur lesen, Buchquellen zusammenstellen und aktualisieren – Baiyun Blog](https://www.bybk.cc/wp-content/uploads/2023/02/Screenshot_20230222-1001582.png)



![[Text- und Bildzusammenfassung] Zusammenfassung der Terminals, die derzeit 5G-A-Carrier-Aggregation unterstützen --- beinhaltet, wie man die Carrier-Aggregation auf iOS aktiviert – Baiyun Blog](https://www.bybk.cc/wp-content/uploads/2024/04/20240407140712630-e26ee861710dd3b075a1302dd00392d5e1db60a1.jpeg)

![[Open Source Reading] Januar 2024 ≈ 400 sorgfältig redigierte Buchquellen Zusammenstellung und Aktualisierung – Baiyun Blog](https://www.bybk.cc/wp-content/uploads/img/af867764c3780f0b7da88376fca7bf92.png)
![[Open Source Lesung] November 950+ sorgfältig Korrektur lesen, Buchquellen zusammenstellen und aktualisieren – Baiyun Blog](https://www.bybk.cc/wp-content/uploads/2023/02/Screenshot_20230222-1001582-1024x593.png)

![[Open Source Lesung] Oktober 1300 Buchquellen-Update – Baiyun Blog](https://www.bybk.cc/wp-content/uploads/img/1eeb6ae31cde88ab39faa2f19651638d.jpeg)
![[VMOS PRO 2.9.6 Mitgliederausgabe] - Baiyun Blog](https://www.bybk.cc/wp-content/uploads/img/c303a7a50d3ebfa235cc380190db2980.png)

Noch keine Kommentare