動態(tài)內存(Dynamic Memory),使用戶能夠指定虛擬操作系統(tǒng)啟動的RAM容量,并將平臺可用的系統(tǒng)內存最大化。
Integrity VM 的可選功能,通過該功能,您可以更改虛擬機使用的物理內存量,而無須重新引導該虛擬機。在 Integrity VM 的本發(fā)行版中,只能在 HP-UX guest 虛擬機上使用動態(tài)內存。例如,該功能允許將作為 Servicegard 節(jié)點的 guest 虛擬機用作多個 Serviceguard 程序包的備用服務器。當程序包故障切換到 guest 虛擬機時,可在故障切換之前、之后或期間更改 guest 虛擬機的內存,使其符合程序包的要求。要使用動態(tài)內存,guest 虛擬機必須安裝 guest 虛擬機管理軟件。
在 VM Host 中,動態(tài)內存軟件隨 Integrity VM 一起提供??墒褂?hpvmcreate、hpvmmodify 或 hpvmclone 命令的 -x 選項在 VM Host 上管理動態(tài)內存。-x 選項可將各種配置參數與 guest 虛擬機(包括 guest 虛擬機的動態(tài)內存和網絡管理)相關聯(lián)。
動態(tài)內存限制使用動態(tài)內存具有下列限制:虛擬機大小不能增加到其初始引導大小(如 -r 選項所指定)以上。如果虛擬機內存已產生碎片,則嘗試減少虛擬機大小可能會失敗或需要很長時間。如果無法將虛擬機大小降低到所需大小,請通過設置新的目標大小來異常中止操作。增加虛擬機大小需要 VM Host 上具有一定的可用內存。如果 VM Host 內存不足,該操作可能需要很長時間才能完成,并可能失敗。如果 ram_target 和 ram_dyn_target_start 的值不在 ram_dyn_min 和 ram_dyn_max 值之間,則會發(fā)出一條警告。VM Host 資源注意事項HP-UX 支持“大型頁面”內存管理功能,可用于提高性能。Integrity VM 可通過確保在虛擬機啟動時分配容量最大的可用頁面來實現此功能。一旦分配并鎖定這些頁面之后,將無法更改其大小。此限制可使大型頁面的碎片降至最低。該功能會限制可在 VM Host 系統(tǒng)上運行的軟件類型。如果 VM Host 系統(tǒng)支持虛擬機以外的其他工作負荷,則大型頁面可能會產生碎片,并可能導致新啟動的虛擬機性能降低。動態(tài)內存增加了 VM Host 內存產生碎片的可能性。動態(tài)內存的當前實現方式可釋放向虛擬機分配的內存部分。必須以大型連續(xù)塊為單位執(zhí)行這些操作;否則,減少虛擬機大小會使為該虛擬機分配的 VM Host 內存產生碎片??赏ㄟ^軟件防止產生此潛在碎片,即以物理連續(xù)內存的最小塊大小 64 MB 的倍數為單位減少虛擬機大小。Guest 虛擬機資源注意事項運行某一工作負荷的系統(tǒng)正常運行期間,大型頁面可能會逐漸產生碎片。VM Host 和運行 HP-UX 操作系統(tǒng)的虛擬機都會出現這種情況。如果虛擬機內存產生碎片,動態(tài)內存子系統(tǒng)將無法減少 guest 虛擬機的大小。這是因為此減少大小的操作使用最小塊大小。如果動態(tài)內存無法刪除至少 64 MB 的物理連續(xù) guest 虛擬機內存,則不會減少大小。指定足夠的 Guest 虛擬機內存如果將 ram_dyn_target_start 的值設置得過小,則 guest 虛擬機操作系統(tǒng)可能會在引導時掛起或崩潰。此種情況下,guest 虛擬機無法訪問足夠的內存量。通常,降低分配給 HP-UX guest 虛擬機的內存時降幅不能超過其分配的內存大小的 75%。對于配置了 2 GB 內存的虛擬機,其內存降低幅度不能超過 50%。
ii.對于函數calloc用法大致與malloc相同,函數原型為:void *callo(size_t num,size_t size),作用是在內存中分配連續(xù)大小為num*size的空間,這一點在動態(tài)數組內存分配有所體現,返回值以及判斷返回是否成功與上面相同,下面重點來討論malloc與calloc區(qū)別:1、后者在返回指向內存的指針之前把它初始化為0。2、請求內存數量的方式不同。malloc的參數僅僅是需要分配的內存字節(jié)數;calloc的參數包括元素的數量和每個元素的字節(jié)數。iii.對于realloc(),函數原型是*void realloc(void *ptr,size_t size),改變ptr所指內存區(qū)域的大小為size長度,如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。當內存不再使用時,應使用free()函數將內存塊釋放。有一點需要注意:當內存釋放之后,應將原本的指針ptr=NULL,否則會形成野指針,可能造成系統(tǒng)崩潰。提示:不論是以上那種方式申請內存,在申請內存之后,最終都要用free釋放空間,不然會造成內存泄漏。





