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.

Nilai Makna
QUOTA_LIMITS_HARDWS_MIN_DISABLE
0x00000002
Set kerja dapat berada di bawah batas set kerja minimum jika tuntutan memori tinggi.

Bendera ini tidak dapat digunakan dengan QUOTA_LIMITS_HARDWS_MIN_ENABLE.

QUOTA_LIMITS_HARDWS_MIN_ENABLE
0x00000001
Set kerja tidak akan berada di bawah batas set kerja minimum.

Bendera ini tidak dapat digunakan dengan QUOTA_LIMITS_HARDWS_MIN_DISABLE.

QUOTA_LIMITS_HARDWS_MAX_DISABLE
0x00000008
Set kerja dapat melebihi batas set kerja maksimum jika ada memori yang berlimpah.

Bendera ini tidak dapat digunakan dengan QUOTA_LIMITS_HARDWS_MAX_ENABLE.

QUOTA_LIMITS_HARDWS_MAX_ENABLE
0x00000004
Set kerja tidak akan melebihi batas set kerja maksimum.

Bendera ini tidak dapat digunakan dengan QUOTA_LIMITS_HARDWS_MAX_DISABLE.

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

Lihat juga

GetProcessWorkingSetSizeEx

Set Kerja Proses

Fungsi Proses dan Utas

Proses

VirtualLock

Rangkaian aktif