Fungsi SetProcessWorkingSetSizeEx (memoryapi.h)
Mengatur ukuran set kerja minimum dan maksimum untuk proses yang ditentukan.
Sintaks
BOOL SetProcessWorkingSetSizeEx(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize,
[in] DWORD Flags
);
Parameter
[in] hProcess
Handel ke proses yang ukuran set kerjanya akan diatur.
Handel harus memiliki hak akses PROCESS_SET_QUOTA . Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.
[in] dwMinimumWorkingSetSize
Ukuran set kerja minimum untuk proses, dalam byte. Manajer memori virtual mencoba untuk menjaga setidaknya memori sebanyak ini dalam proses setiap kali proses aktif.
Parameter ini harus lebih besar dari nol tetapi kurang dari atau sama dengan ukuran set kerja maksimum. Ukuran default adalah 50 halaman (misalnya, ini adalah 204.800 byte pada sistem dengan ukuran halaman 4K). Jika nilainya lebih besar dari nol tetapi kurang dari 20 halaman, nilai minimum diatur ke 20 halaman.
Jika dwMinimumWorkingSetSize dan dwMaximumWorkingSetSize memiliki nilai (SIZE_T)–1, fungsi akan menghapus halaman sebanyak mungkin dari kumpulan kerja proses yang ditentukan.
[in] dwMaximumWorkingSetSize
Ukuran set kerja maksimum untuk proses, dalam byte. Manajer memori virtual mencoba untuk menjaga tidak lebih dari memori sebanyak ini dalam proses setiap kali proses aktif dan memori yang tersedia rendah.
Parameter ini harus lebih besar dari atau sama dengan 13 halaman (misalnya, 53.248 pada sistem dengan ukuran halaman 4K), dan kurang dari maksimum seluruh sistem (jumlah halaman yang tersedia dikurangi 512 halaman). Ukuran defaultnya adalah 345 halaman (misalnya, ini adalah 1.413.120 byte pada sistem dengan ukuran halaman 4K).
Jika dwMinimumWorkingSetSize dan dwMaximumWorkingSetSize memiliki nilai (SIZE_T)–1, fungsi akan menghapus halaman sebanyak mungkin dari kumpulan kerja proses yang ditentukan. Untuk detailnya, lihat Keterangan.
[in] Flags
Bendera yang mengontrol pemberlakuan ukuran set kerja minimum dan maksimum.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Set proses yang berfungsi adalah kumpulan halaman memori di ruang alamat virtual proses yang saat ini tinggal di memori fisik. Halaman ini tersedia untuk digunakan aplikasi tanpa memicu kesalahan halaman. Untuk informasi selengkapnya tentang kesalahan halaman, lihat Set Kerja. Ukuran set kerja minimum dan maksimum mempengaruhi perilaku halaman memori virtual dari sebuah proses.
Set kerja dari proses yang ditentukan dapat dikosongkan dengan menentukan nilai (SIZE_T)–1 untuk ukuran set kerja minimum dan maksimum. Ini menghapus halaman sebanyak mungkin dari set kerja. Fungsi EmptyWorkingSet juga dapat digunakan untuk tujuan ini.
Jika nilai dwMinimumWorkingSetSize atau dwMaximumWorkingSetSize lebih besar dari ukuran set kerja proses saat ini, proses yang ditentukan harus memiliki hak istimewa SE_INC_WORKING_SET_NAME . Semua pengguna umumnya memiliki hak istimewa ini. Untuk informasi selengkapnya tentang hak istimewa keamanan, lihat Hak Istimewa.
Windows Server 2003: Proses yang ditentukan harus memiliki hak istimewa SE_INC_BASE_PRIORITY_NAME . Pengguna di grup Administrator dan Pengguna Power umumnya memiliki hak istimewa ini.
Sistem operasi mengalokasikan ukuran set kerja berdasarkan urutan pertama yang dilayani. Misalnya, jika aplikasi berhasil menetapkan 40 megabyte sebagai ukuran set kerja minimumnya pada sistem 64 megabyte, dan aplikasi kedua meminta ukuran set kerja 40 megabyte, sistem operasi menolak permintaan aplikasi kedua.
Secara default, menggunakan fungsi SetProcessWorkingSetSize untuk mengatur ukuran set kerja minimum dan maksimum aplikasi tidak menjamin bahwa memori yang diminta akan dicadangkan, atau bahwa itu akan tetap tinggal setiap saat. Ketika aplikasi diam, atau situasi memori rendah menyebabkan permintaan memori, sistem operasi dapat mengurangi set kerja aplikasi di bawah batas set kerja minimumnya. Jika memori berlimpah, sistem mungkin memungkinkan aplikasi melebihi batas set kerja maksimumnya. Bendera QUOTA_LIMITS_HARDWS_MIN_ENABLE dan QUOTA_LIMITS_HARDWS_MAX_ENABLE memungkinkan Anda memastikan bahwa batas diberlakukan.
Ketika Anda meningkatkan ukuran set kerja aplikasi, Anda mengambil memori fisik dari sistem lainnya. Ini dapat menurunkan performa aplikasi lain dan sistem secara keseluruhan. Ini juga dapat menyebabkan kegagalan operasi yang memerlukan memori fisik ada (misalnya, membuat proses, utas, dan kumpulan kernel). Dengan demikian, Anda harus menggunakan fungsi SetProcessWorkingSetSize dengan hati-hati. Anda harus selalu mempertimbangkan performa seluruh sistem saat merancang aplikasi.
Aplikasi dapat menggunakan fungsi VirtualLock untuk mengunci rentang ruang alamat virtual aplikasi dalam memori; namun, itu berpotensi menurunkan performa sistem.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | memoryapi.h (termasuk Windows.h pada Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Pustaka | onecore.lib |
DLL | Kernel32.dll |