1. 程式人生 > >C# 開啟大地址記憶體以應對32位機器記憶體不夠用問題

C# 開啟大地址記憶體以應對32位機器記憶體不夠用問題

作者:炊文偉

郵箱:[email protected]

專注於以安全為核心的平安城市,智慧交通,智慧家居軟體平臺解決方案設計與開發

概述:
  • 在目前很多機器都使用8G記憶體情況下,很多軟體卻無法有效使用更高記憶體,本文主要簡述使用C#語言開發的應用程式,使用系統自帶的Editbin工具開啟3G大記憶體使用。

詳細步驟(VS2015舉例)

  • 第一步:找到editbin.exe檔案

格式:VS版本\VC\bin\editbin.exe

以我機器為例其位於VS軟體安裝目錄下:C:\Program Files (x86)\MicrosoftVisual Studio 14.0\VC\bin\editbin.exe

  • 第二步:執行開啟大地址命令

命令格式:/largeaddressaware  exe檔案路徑

以我機器下一個WindowsFormsApplication1程式(.Net4.0)為例:

/largeaddressaware  C:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

命令列中執行如下:

C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\bin>editbin /largeaddressawareC:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

  • 第三步:執行後如下所示:

C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\bin>editbin /largeaddressawareC:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

Microsoft(R) COFF/PE Editor Version 14.00.23026.0

Copyright(C) Microsoft Corporation.  All rightsreserved.

  • 第四步:驗證是否確實開啟了大地址

editbin.exe檔案上方可以看到dumbin.exe檔案。

命令格式:/headersexe檔案路徑

以我機器下剛才設定的WindowsFormsApplication1程式(.Net4.0)為例:

C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\bin>dumpbin /headersC:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

  • 第五步:顯示如下資訊即可確認獲取資訊成功

C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\bin>dumpbin /headersC:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

Microsoft(R) COFF/PE Dumper Version 14.00.23026.0

Copyright(C) Microsoft Corporation.  All rightsreserved.

Dump offileC:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

PEsignature found

FileType: EXECUTABLE IMAGE

FILEHEADER VALUES

             14C machine (x86)

               3 number of sections

        56E7F29F time date stamp Tue Mar 1519:31:43 2016

               0 file pointer to symbol table

               0 number of symbols

              E0 size of optional header

              22 characteristics

                   Executable

                   Application can handle large(>2GB) addresses

OPTIONALHEADER VALUES

             10B magic # (PE32)

           48.00 linker version

            1200 size of code

             A00 size of initialized data

              0 size of uninitialized data

            3002 entry point (00403002)

            2000 base of code

            4000 base of data

          400000 image base (00400000 to00407FFF)

            2000 section alignment

             200 file alignment

            4.00 operating system version

            0.00 image version

            4.00 subsystem version

               0 Win32 version

            8000 size of image

             200 size of headers

            1E14 checksum

               2 subsystem (Windows GUI)

            8540 DLL characteristics

                   Dynamic base

                   NX compatible

                   No structured exceptionhandler

                   Terminal Server Aware

          100000 size of stack reserve

            1000 size of stack commit

          100000 size of heap reserve

            1000 size of heap commit

               0 loader flags

              10 number of directories

               0 [       0] RVA [size] of Export Directory

            2FAD [      4F] RVA [size] of Import Directory

            4000 [     62C] RVA [size] of Resource Directory

               0 [       0] RVA [size] of Exception Directory

               0 [       0] RVA [size] of Certificates Directory

            6000 [       C]RVA [size] of Base Relocation Directory

            2F04 [      1C] RVA [size] of Debug Directory

               0 [       0] RVA [size] of Architecture Directory

               0 [       0] RVA [size] of Global PointerDirectory

               0 [       0]RVA [size] of Thread Storage Directory

               0 [       0] RVA [size] of Load ConfigurationDirectory

               0 [       0] RVA [size] of Bound Import Directory

            2000 [       8] RVA [size] of Import Address TableDirectory

               0 [       0] RVA [size] of Delay Import Directory

            2008 [      48] RVA [size] of COM DescriptorDirectory

               0 [       0] RVA [size] of Reserved Directory

SECTIONHEADER #1

   .text name

    1008 virtual size

    2000 virtual address (00402000 to 00403007)

    1200 size of raw data

     200 file pointer to raw data (00000200 to000013FF)

       0 file pointer to relocation table

       0 file pointer to line numbers

       0 number of relocations

       0 number of line numbers

60000020flags

         Code

         Execute Read

  Debug Directories

        Time Type        Size      RVA Pointer

    -------- ------- -------- -------- --------

    56E7F29E cv            8D 00002F20     1120   Format: RSDS, {D72A86FA-9265-4A90-9885-AEED19611EC0}, 1,C:\Users\chuiwenwei\Desktop\WindowsFormsApplication1\WindowsFormsApplication1\obj\Debug\WindowsFormsApplication1.pdb

SECTIONHEADER #2

   .rsrc name

     62C virtual size

    4000 virtual address (00404000 to 0040462B)

     800 size of raw data

    1400 file pointer to raw data (00001400 to00001BFF)

       0 file pointer to relocation table

       0 file pointer to line numbers

       0 number of relocations

       0 number of line numbers

40000040flags

         Initialized Data

         Read Only

SECTIONHEADER #3

  .reloc name

       C virtual size

    6000 virtual address (00406000 to 0040600B)

     200 size of raw data

    1C00 file pointer to raw data (00001C00 to00001DFF)

       0 file pointer to relocation table

       0 file pointer to line numbers

       0 number of relocations

       0 number of line numbers

42000040flags

         Initialized Data

         Discardable

         Read Only

  Summary

        2000 .reloc

        2000 .rsrc

        2000 .text

  • 第六步:如果可以Application can handle large (>2GB)addresses就說明設定大地址成功

相關推薦

C# 開啟地址記憶體應對32機器記憶體夠用問題

作者:炊文偉 郵箱:[email protected] 專注於以安全為核心的平安城市,智慧交通,智慧家居軟體平臺解決方案設計與開發 概述: 在目前很多機器都使用8G記憶體情況下,很多軟體卻

為什麽32機器只能用到4GB內存

必須 lan 組成 討論 bit 大小 mage 技術分享 同時 在此之前先來了解一些計算機存儲單位之間的關系以及計算機系統結構和PC硬件方面的一些知識。 一、計算機存儲單位之間的關系 位 bit (Binary Digits):存放一位二進制數,即 0 或 1,

C語言實現 兩個int(32)整數m和n的二進位制表達中,有多少個位(bit)不同?

輸入例子: 1999 2299 輸出例子:7 int main() { int a = 0; int b = 0; int num = 0; int count = 0; printf("請輸入兩個整數:"); scanf("%d%d",&a,&b); n

win7 32系統記憶體限制破解支援到128G記憶體

  使用win7 32位的系統,很多使用者都是會遇到32位系統8G記憶體只能使用3.48GB記憶體可用。32位理論上最大也就3.75GB可用,但實際上也就3.25GB能夠正常使用,其他的就是拿來做快取了。   不過坑爹的是32位的系統最多隻能支援3G多的記憶體,現在很多

C語言】兩個int(32)整數m和n的二進位制表達中,有多少個位(bit)不同

根據異或我們可以知道,兩個數字的二進位制位按位異或,相同為0,相異為1。 因此我們可以通過將兩個數字按位異或,並計算該異或結果中二進位制位中1的個數,即可知道有多少個位元位不同。 int count(int a, int b) { int m = a ^ b; // 兩個數按位異或,對應不

32作業系統記憶體大小識別

500元、300元、150元......隨著DDR2價格的逐漸崩盤,目前連2GB DDR2-800記憶體的價格也已經跌至百元,越來越多的朋友為愛機裝上了4GB記憶體。隨著4GB電腦的逐漸增加,一個長期存在的問題又再次被人們所關注:為何我只能看到3.25GB實體記憶體? 1

Windows 32程式記憶體擴充套件

所有 32 位應用程式都有 4 GB 的程序地址空間(32 位地址最多可以對映 4 GB 的記憶體)。對於 Microsoft Windows 作業系統,應用程式可以訪問 2 GB 的程序地址空間,稱為使用者模式虛擬地址空間。應用程式擁有的所有執行緒都共享同一個使用者模式

假設在32機器上,請在2億個未經排序數字中找出中間值 給出算法思路就可以

iad use tar www sina gtk 算法 irf 機器 訟23乙6j8型f漳略cshttp://shequ.docin.com/kln26571 kxYsa2矢62祭匝練6http://shufang.docin.com/sina_5847497260 1

64機器32機器的區別

文章目錄 一、區別 二、參考 一、區別 比如32位機器 運算器一次最多可以處理32位資料 暫存器最大寬度32 暫存器和運算器之間的通路為32位 如下面的16位機器,運算器和暫存器之間通路為16位。暫存器

32windos裝了TensorFlow

花了2天時間在垃圾電腦(32位)上裝TensorFlow 先是按著百度靠前的程式碼,一句一句的抄。 那個是適合64位的,32位也能裝上,不能使用。浪費半天 然後跟著一個先搜尋,再安裝的教材裝的。 有hesi_m/tensorflow r-tensorflow

32機器和64機器

#include <stddef.h>OS version:Red Hat Enterprise Linux Server release 5.3 (Tikanga) Linux 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST 2008 x86_64 x

32機器和64機器各型別的長度對比

1.Linux下檢視系統位數的指令:                                                                                      getconf LONG_BIT                

32機器 64 機器

#include <stddef.h> OS version:Red Hat Enterprise Linux Server release 5.3 (Tikanga) Linux 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST 2008 x86_

32模式下C/C++程式可用最記憶體

 由於在32位處理器架構下,對記憶體的訪問限制在4GB以下的空間。為了突破 4GB的限制,現在的32位至強處理器採用一種叫PAE(實體地址擴充套件)的技術,來實現對超出4GB空間的實體地址的訪問。PAE實際上採用了36位的地址匯流排,這樣理論上可以支援64GB記憶體空間的定址。  PAE使得處理器可以支援訪問

C語言】位元組對齊問題(32系統為例)

  1. 什麼是對齊?   現代計算機中記憶體空間都是按照位元組(byte)劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何地址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體地址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序地一個接一個地排放,這就是對齊

C/C++結構體對齊方式詳解,從記憶體地址進行解析

注意:童鞋們如果仔仔細細看完這篇部落格,肯定能明白結構體的對齊方式。 最近在做一個專案的時候,客戶給的鐳射點雲檔案是二進位制形式,因此需要根據客戶定義的結構體,將點雲檔案儲存為文字檔案方便在第三方軟體如cloudCompare中檢視。但是發現客戶的結構體所佔記憶體空間跟我的

windows 32作業系統中,每個程序最可用記憶體空間為3GB

 在windows 32位作業系統中,每一個程序能使用到的最大空間(包含作業系統使用的核心模式地址空間)為4GB , 在通常情況下作業系統會分配2GB記憶體給程序使用,另外2GB記憶體為作業系統保留, 例如安裝了64GB記憶體,在伺服器上安裝了SQL / Exchange / ISA / IIS .....

PAE——使32系統支援最64G記憶體

1 PAE Physical Address Extension(PAE,中文譯名:實體地址擴充套件)技術最初是為了彌補32位地址在PC伺服器應用上的不足而推出的。我們知道,傳統的IA32架構只有32位地址匯流排,只能讓系統容納不超過4GB的記憶體,這麼大的記憶體,對於普

C/C++32和64編譯器下,各資料型別和指標變數分配記憶體大小

1. 32位定址空間 資料型別 佔用位元組數(位元組) 說明 資料型別 佔用位元組數(位元組) 說明 Bool 1 char 1

c語言中32地址型別轉換為64整數型別

uint64_t idt_operand = ((sizeof(idt) - 1) | ((uint64_t)(uint32_t)idt << 16)); idt是陣列名,也就是結構陣列型別的指標。static struct gate_desc idt[IDT