變更記憶體模型 (32 位元 JVM)
32 位元 JVM 上提供三個記憶體模型。
如需 AIX® 記憶體模型的進一步詳細資料,請參閱 AIX版本的說明文件。 例如: 大型程式支援。
小型記憶體模型
使用應用程式的預設小型記憶體模型,應用程式只有一個區段 (區段 2) ,它可以在其中 malloc() 資料並配置其他執行緒堆疊。 不過,它有 11 個共用記憶體區段可供 mmap() 或 shmat() 資料使用。
大型記憶體模型
使用 malloc() 所配置資料的這個單一區段可能不夠,因此可以在「專用」與「共用」記憶體之間移動界限,為應用程式提供更多「專用」記憶體,但減少「共用」記憶體數量。 您可以透過變更應用程式的「執行檔共用物件檔案格式 (XCOFF)」標頭中的 o_maxdata 設定來移動界限。
您可以透過下列方式變更 o_maxdata 設定:
- 在編譯時期使用 -bmaxdata 旗標與 ld 指令設定 o_maxdata 的值。
- 使用 LDR_CNTRL=MAXDATA=0xn0000000 (n 個區段) 環境變數來設定 o_maxdata 值。
非常大的記憶體模型
將 "@DSA" 新增至 MAXDATA 設定的結尾,以啟動非常大的記憶體模型。 它提供兩個額外功能:
- 在單一區段與 MAXDATA 設定指定的區段之間動態移動專用及共用記憶體界限。 此動態移動是透過從區段 3 向上配置專用記憶體,以及從區段 C 向下配置共用記憶體來達成。 如果 shmat 或 mmap 常式未使用區段,則專用記憶體區域可以向上展開至新的區段。
- 將共用程式庫載入程序專用區域的能力。 如果您指定 MAXDATA 值為 0 或大於 0xAFFFFFFF,則處理程序將不會使用廣域共用程式庫,但會私下載入它們。 因此, shmat 及 mmap 程序會在較高區段開始配置,因為它們不再保留用於共用程式庫。 以此方式,處理程序具有更連續的記憶體。