[ad_1]
Informasi proyek: C# WPF dengan .NET Framework 4.7.2, saya juga menggunakan Desain Material untuk mengatur Tema Gelap/Terang untuk SELURUH Aplikasi
sistem operasi: Windows 10 x64 dengan RAM 8GB
Kode: Jendela Faktur ↓
XAML: XAML
C# : CSHARP
Proyek saya memiliki konsumsi RAM yang sangat tinggi, tetapi sekarang proyek saya besar, di Jendela Utama saya ketika saya ingin memuat jendela, saya mendapatkan kesalahan berikut:
private void Window_Loaded(object sender, RoutedEventArgs e) { new HEAD_LST_FROOSH22().Show(); }
Error: System.OutOfMemoryException: 'Insufficient memory to continue the execution of the program.
Apa yang saya coba:
Saya mencoba memberikan semua data yang diperlukan untuk memeriksa kesalahan ini, ini adalah kesalahan umum dan tidak ada yang dapat berkomentar dengan kode ringkasan. Saya tidak mengharapkan siapa pun membaca keseluruhan kode, tetapi seseorang dapat memberikan pendapat atau petunjuk sekilas.
Terima kasih semuanya
Memperbarui :
Saya membuat C# WPF kecil untuk Menguji UI karena saya dicurigai “Desain Material”
jadi begini :
Solusi 1
Sulit untuk mengatakan sesuatu dengan informasi yang kurang ini… tetapi :
Ram 8 GB dengan Win10 bukanlah Memori yang banyak karena Windwos sendiri memakan waktu hingga 5 GB untuk miliknya sendiri.
Sekarang tergantung Aplikasi Anda apa yang terjadi dengan sisa Memori dan apakah itu cukup …
Solusi 2
Mengutip:Memori tidak cukup untuk melanjutkan eksekusi program untuk C# WPF
Anda hampir tidak memberi kami cukup informasi untuk menebak-nebak, tetapi cukup untuk solusi yang masuk akal.
Satu-satunya hal yang masuk akal untuk dilakukan adalah mencoba pada PC dengan 12GB atau 16 GB untuk melihat apakah masalah masih muncul.
W10 haus memori, dan jika Anda mengisinya dengan anti-malware, mungkin normal jika 8GB cukup untuk W10, anti-malware, dan lainnya, namun tidak banyak yang tersisa untuk aplikasi pengguna.
Jika tidak, masalahnya adalah tipikal kode rekursif yang tidak dikuasai.
Tanpa menggunakan PC Anda dan melakukan pengukuran untuk memahami apa yang menghabiskan memori dan bagaimana cara kerjanya, mustahil untuk membantu. T6 Jenis kegiatan ini umumnya diperuntukkan bagi para profesional dan mahal karena waktu yang dihabiskan.
Solusi 3
Untuk menambah apa yang Ralf dan Patrice katakan … Satu-satunya cara agar kode yang Anda tampilkan dapat menyebabkan pesan kesalahan itu adalah jika kode ini
private void Window_Loaded(object sender, RoutedEventArgs e) { new HEAD_LST_FROOSH22().Show(); }
adalah bagian dari HEAD_LST_FROOSH22
kelas, atau HEAD_LST_FROOSH22
kelas membuat turunan dari kelas saat ini dan hasilnya adalah rekursi tak terbatas.
Izinkan saya mencoba menjelaskan apa itu “rekursi tak terbatas”: di dunia nyata, Anda memiliki tugas yang harus dilakukan – membuat secangkir teh. Namun untuk membuat secangkir teh, Anda harus merebus air, dan pemilik ketel hanya akan mengizinkan Anda meminumnya saat Anda memberi mereka … secangkir teh.
Karena Anda memerlukan ketel untuk membuat secangkir teh untuk mendapatkan ketel untuk membuat secangkir teh, Anda tidak akan pernah bisa menyelesaikan tugas tersebut.
Dalam komputasi, hal yang sama terjadi: metode A memanggil dirinya sendiri (rekursi langsung)
atau memanggil metode B yang memanggil metode A (rekursi tidak langsung). Karena setiap kali Anda memanggil suatu metode, metode tersebut menggunakan ruang pada tumpukan aplikasi, Anda dengan cepat menghabiskan seluruh tumpukan, dan Anda mendapatkan kesalahan “kehabisan memori”. Tumpukannya cukup kecil – hanya 1MB – jadi sangat mudah untuk melampauinya.
Jadi mulailah dengan melihat “keseluruhan kode” dan cari tahu apa hubungan antara panggilan yang berisi kode itu dan HEAD_LST_FROOSH22
kelas adalah.
[ad_2]
コメント