Ada dua cara penggunaan memori menganalisis dalam aplikasi Anda di Unity:
Halaman ini mencakup informasi pada modul Profiler Memori bawaan. Untuk informasi lebih lanjut tentang paket profiler Memori, lihat .
Modul Memory Profileer memvisualisasikan kontra yang mewakili total memori yang dialokasikan dalam aplikasi Anda. Anda dapat menggunakan modul memori untuk melihat informasi seperti jumlah benda yang dimuat, dan memori yang mereka ambil dalam total per kategori. Anda juga dapat melihat jumlah bingkai Alokasi GC per Profiler.
Ketika Anda menprofilkan aplikasi Anda di Editor, daripada membangun dan memprofilkan aplikasi Anda pada perangkat target, data profil dalam modul Memory Profileer lebih besar dari ketika Anda menjalankan aplikasi Anda di platform rilis. Ini karena Editor Unity menggunakan objek spesifik yang mengambil memori, dan jendela Editor itu sendiri menggunakan memori ekstra.
Juga, karena Unity tidak dapat secara bersih memisahkan memori bahwa Profiler sendiri mengambil dari memori mode Play, memori bahwa penggunaan Profiler ditampilkan di jendela Profiler. Untuk mengingatkan Anda tentang ini, tampilan peringatan di bagian atas rincian modul Memory Profileer pane setiap kali Anda memiliki target Profiler ditetapkan ke Play Mode atau Editor. Untuk jumlah yang lebih tepat dan penggunaan memori untuk aplikasi Anda, Anda harus memberi profil aplikasi Anda pada perangkat target dan sistem operasi Anda berniat untuk dijalankan. Untuk informasi lebih lanjut, lihat dokumentasi pada Profil aplikasi Anda.
Modul Memory Profileer dibagi menjadi kategori yang menampilkan informasi rinci di mana aplikasi Anda menghabiskan memori. Anda juga dapat mengklik legenda berwarna kategori untuk memotong tampilannya.
Category | Description |
---|---|
Total Allocated | Total memori aplikasi Anda telah digunakan. |
Texture Memory | Berapa banyak memori TexturesGambar yang digunakan ketika membuat elemen GameObject, Sprite, atau UI. Tekstur sering diterapkan pada permukaan mesh untuk memberikan detail visual. More info Lihat di Glossary dalam aplikasi Anda telah digunakan. |
MeshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info See in Glossary Memory |
Berapa banyak memori Meshes dalam aplikasi Anda telah digunakan. |
Material Count | Jumlah instance MaterialAset yang menentukan bagaimana permukaan harus diberikan. More info Lihat di Glossary dalam aplikasi Anda. |
Object Count | Jumlah instance objek asli dalam aplikasi Anda. |
GC Used Memory | Jumlah memori GC heap telah digunakan. |
GC Allocated in Frame | Jumlah memori yang dialokasikan per bingkai pada heap GC. |
Ada dua pandangan yang tersedia di panel detail modul, terletak di bagian bawah jendela Profiler:
Untuk mengubah tampilan, pilih dari dropdown di sebelah kiri atas pane detail modul.
Tampilan sederhana menampilkan ikhtisar bagaimana Unity menggunakan memori secara real-time pada dasar per-frame. Ini memecah memori total yang digunakan aplikasi Anda menjadi beberapa kategori utama. Nilai Total didasarkan pada Counter Profiler Memori yang Digunakan Sistem, yang menunjukkan berapa banyak laporan sistem operasi (OS) seperti yang digunakan oleh aplikasi Anda.
Unity menetapkan beberapa kolam memori selain alokasi untuk menghindari meminta sistem operasi untuk memori terlalu sering. Modul Profiler menampilkan berapa banyak cadangan Unity memori, dan berapa banyak memori Unity yang digunakan pada saat pengambilan Profiler.
Tampilan sederhana menampilkan data yang dikumpulkan dalam System Used Memory Ditempatkan dalam kode dengan ProfilerCounter API untuk melacak metrik, seperti jumlah musuh yang ditidur dalam permainan Anda.
Lihat di Glossary. Ini menunjukkan berapa banyak memori sistem operasi (OS) laporan sebagai digunakan oleh aplikasi dan sesuai dengan nilai Total dari bar Total Committed Memory dan bar Total Memory Breakdown.
Pada platform yang mendukung mendapatkan total ukuran memori aplikasi dari sistem operasi, System Memory Usage lebih dari 0 dan adalah ukuran yang sama dalam manajer tugas.
Tabel referensi berikut menjelaskan statistik yang tersedia dalam tampilan Sederhana, ditambah counter profiler yang sesuai, dan ketersediaan dalam membangun rilis. Informasi ini juga tersedia melaluiProfilerRecorder API dan diProfiler Modul Editor sehingga Anda dapat menambahkannya ke modul Profiler kustom.
Property | Description | Corresponding Profiler counter | Available in Release Players? |
---|---|---|---|
Normalized | Aktifkan pengaturan ini untuk mengukur grafik Total Committed Memory dan Total Memory Breakdown untuk penggunaan memori dari bingkai yang dipilih. Jika Anda menonaktifkan pengaturan ini, skala grafik ke total memori yang digunakan dalam rentang bingkai. Pengaturan ini dapat membantu Anda melihat berapa jumlah total atau relatif dari perubahan memori dari bingkai ke bingkai | N/A | N/A |
Total Committed Memory | Panjang Total Committed Memory bar menunjukkan jumlah total memori yang sistem Unity Memory Manager dilacak, berapa banyak yang digunakan, dan berapa banyak memori tidak dilacak melalui sistem ini. | Sistem Memori yang Digunakan | Yes |
Memori yang dilacak (dalam penggunaan / dilangsungkan) | Menunjukkan jumlah total memori yang digunakan Unity dan trek (in use), dan jumlah memori yang dimiliki Unity untuk tujuan pelacakan dan alokasi kolam (Reserved). | Total Digunakan Memori Total 0 produk untuk Memory |
Yes |
Memori yang tidak dilacak | Menunjukkan jumlah total memori yang digunakan Unity tetapi tidak menyadari. Beberapa contoh memori yang tidak dilacak adalah: - Memori dialokasikan melalui plug-ins asli atau beberapa driver - Mono atau IL2CPP jenis metadata - Memori yang dapat dieksekusi kode dan DLL menggunakan Penyedia platform asli mungkin memiliki informasi lebih lanjut tentang beberapa jumlah memori yang tidak dilacak ini. |
N/A | N/A |
Total Memory Breakdown | Menampilkan jumlah total yang sama sebagai bar Total Committed Memory tetapi memecahnya ke beberapa kategori tingkat tinggi, berdasarkan subsistem Unity mengalokasikan memori untuk. Tidak semua sistem memori menggunakan pool atau membedakan antara memori yang digunakan dan dicadangkan. Mereka yang menampilkan dua angka, yang digunakan dan jumlah memori yang disediakan. Jika jumlah yang digunakan tidak berbagi unit yang sama (B, MB, GB) sebagai jumlah yang disediakan, Unity menampilkan unit, jika tidak dihilangkan. |
Sistem Memori yang Digunakan | Yes |
Dikelola Heap (dalam penggunaan / dilangsungkan) | Ukuran heap yang digunakan dan ukuran heap total yang menggunakan kode yang dikelola. Memori ini adalah sampah yang dikumpulkan. | GC Digunakan Memori GC Sitemap |
Yes |
Grafik & Grafik Login | Perkiraan jumlah memori driver yang digunakan pada Tekstur, target render, Shaders, dan data Mesh. | Gfx Digunakan Memori Gfx Sitemap |
No |
Audio | Perkiraan penggunaan memori sistem Audio. | Audio Digunakan Memori Audio Sitemap |
Yes |
Video | Perkiraan penggunaan memori sistem Video. | Video Digunakan Memori Video Sitemap |
Yes |
Other | Menampilkan memori asli yang trek Unity, tetapi tidak dilaporkan di bawah counter tertentu. Untuk mendapatkan informasi lebih lanjut tentang makeup dari kategori ini atau lainnya, ambil snapshot di Tampilan terperinci atau dengan paket Memory Profileer. Important: Kategori lain tidak langsung peta ke kelompok lain dalam tampilan Detailed. Dalam pandangan ini, Other mengandung sisa memori asli yang tidak digunakan untuk sisi GPU memori grafis, Profiler, Audio, atau memori Video. |
N/A | N/A |
Profiler | Memori yang menggunakan fungsi Profileer dan cadangan dari sistem. | Profiler Memori Profiler Sitemap |
Yes |
Objects stats | Menampilkan jumlah kasus objek dari jenis Aset yang umumnya mengambil persentase tinggi memori (Tekstil, Mesh, Bahan, Klip Animasi), bersama dengan ukuran terakumulasi mereka dalam memori (Assets, GameObjects, objek Adegan). Note: Tekstur dan Memori Mesh tidak peta langsung ke Graphics & Graphics Driver stat dalam pandangan Total Memory Breakdown. Ini karena beberapa memori itu mungkin juga jatuh ke dalam kategori Other dari Total Memory Breakdown bar. |
Hitungan objek | No |
Textures | Jumlah total tekstur yang dimuat dan memori yang mereka gunakan. | Tekstur Count Texture Login |
No |
Meshes | Jumlah total mesh yang dimuat dan memori yang mereka gunakan. | Hitung Mesh Mesh Memory |
No |
Materials | Jumlah total bahan dimuat dan memori yang mereka gunakan. | Bahan Count Material Login |
No |
Animasi Klip | Jumlah total Animasi yang dimuat dan memori yang mereka gunakan. | AnimasiClip Count AnimationClip Login |
No |
Assets | Jumlah total aset yang dimuat. | Jumlah Aset | No |
Objek Permainan | Jumlah total instance GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info Lihat di Glossary pada sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info Lihat di Glossary. |
Hitungan GameObject | No |
Objek Adegan | Jumlah total UnityEngine.Objects dinamis. Jumlah ini termasuk Hitungan GameObject, ditambah jumlah total komponen, dan semuanya yang bukan aset di tempat kejadian. |
Adegan Objek Count | No |
GC dialokasikan dalam bingkai | Menampilkan jumlah alokasi yang dikelola dalam bingkai yang dipilih, dan ukuran total mereka di byte. | GC Alokasi Dalam Bingkai Count GC Sitemap |
No |
Anda dapat menggunakan ProfilerRecorder API untuk mengakses kontra modul Memory Profileer di Pemain. Contoh berikut mengandung skrip sederhana yang mengumpulkan Total Reserved Memory, GC Reserved Memory dan metrik System Used Memory, dan menampilkan mereka sebagai Login Login. Informasi modul Memory Profileer milik ProfilerCategory. Login Profiler categoryMengidentifikasi data beban kerja untuk subsistem Unity (misalnya, rendering, Scripting dan kategori Animasi). Unity menerapkan pengkodean warna untuk kategori untuk secara visual membedakan antara jenis data di jendela Profiler.
Lihat di Glossary.
using System.Text;
using Unity.Profiling;
using UnityEngine;
public class MemoryStatsScript : MonoBehaviour
{
string statsText;
ProfilerRecorder totalReservedMemoryRecorder;
ProfilerRecorder gcReservedMemoryRecorder;
ProfilerRecorder systemUsedMemoryRecorder;
void OnEnable()
{
totalReservedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "Total Reserved Memory");
gcReservedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "GC Reserved Memory");
systemUsedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "System Used Memory");
}
void OnDisable()
{
totalReservedMemoryRecorder.Dispose();
gcReservedMemoryRecorder.Dispose();
systemUsedMemoryRecorder.Dispose();
}
void Update()
{
var sb = new StringBuilder(500);
if (totalReservedMemoryRecorder.Valid)
sb.AppendLine($"Total Reserved Memory: {totalReservedMemoryRecorder.LastValue}");
if (gcReservedMemoryRecorder.Valid)
sb.AppendLine($"GC Reserved Memory: {gcReservedMemoryRecorder.LastValue}");
if (systemUsedMemoryRecorder.Valid)
sb.AppendLine($"System Used Memory: {systemUsedMemoryRecorder.LastValue}");
statsText = sb.ToString();
}
void OnGUI()
{
GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
}
}
screenshot berikut menunjukkan hasil dari menambahkan skrip ke .
Informasi ini tersedia di Release Players, seperti penghitung tingkat tinggi lainnya di tabel di atas. Jika Anda ingin melihat kontra memori yang dipilih dalam modul kustom di jendela Profiler, gunakan Modul Editor untuk mengkonfigurasi grafik.
Tampilan terperinci memberikan snapshot dari state saat ini aplikasi Anda. Pilih tombol Take Sample untuk menangkap penggunaan memori rinci untuk target saat ini. Dibutuhkan waktu Profiler untuk mendapatkan data ini, sehingga tampilan terperinci tidak memberikan rincian waktu nyata. Setelah Profiler mengambil sampel, jendela Profiler menampilkan tampilan daftar di mana Anda dapat menjelajahi penggunaan memori aplikasi Anda secara lebih rinci.
Aktifkan pengaturan Gather Object References di bagian atas detail modul pane untuk mengumpulkan informasi tentang apa yang merujuk objek pada saat snapshot. Profiler menampilkan informasi ini di pane kanan jendela.
Tampilan daftar membagi objek yang menggunakan memori ke dalam kategori berikut:
Ketika Anda mengklik GameObject di Aset atau daftar Memori Adegan, Unity menyorotinya di Proyek atau Scene viewTampilan interaktif ke dunia yang Anda buat. Anda menggunakan Adegan Lihat untuk memilih dan posisi pemandangan, karakter, kamera, lampu, dan semua jenis lain dari Game Object. More info
Lihat di Glossary.
Sitemap Dalam kategori lain, memori yang dilaporkan di bawah memori Note: dibaca. Sistem operasi mungkin membuang halaman ini sesuai kebutuhan dan kemudian memuat ulang mereka dari sistem file. Ini menghasilkan penggunaan memori yang lebih rendah, dan tidak langsung berkontribusi pada keputusan sistem operasi untuk menutup aplikasi Anda jika menggunakan terlalu banyak memori. Beberapa halaman ini juga dapat dibagikan dengan aplikasi lain yang menggunakan framework yang sama.System.ExecutableAndDlls
is read-only memory. The operating system might discard these pages as needed and later reload them from the file system. This generates lower memory usage, and doesn’t directly contribute to the operating system’s decision to close your application if it uses too much memory. Some of these pages might also be shared with other applications that are using the same frameworks.