• Thứ Bảy, 22/01/2011 07:47 (GMT+7)

    Lỗi Insufficient Memory khi chạy chương trình Foxpro 3.0

    Câu hỏi :

    Phần mềm viết trên Foxpro 3.0 khi chạy trên các máy có RAM trên 1GB bị báo lỗi INSUFFICIENT MEMORY và không thể khởi động được chương trình?



    Trả lời :

    Visual Foxpro 3.0 là phiên bản chạy trên Windows, về lý thuyết nó sẽ dùng bộ nhớ ảo do Windows cung cấp. Tùy theo version mà Windows sẽ quản lý RAM tối đa là bao nhiêu. Thí dụ hiện nay, chúng ta thường dùng các version WinXP, Windows Vista, Windows 7, các version này cho phép quản lý RAM khá lớn (>3GB). 

    Do VFP 3.0 là phiên bản quá cũ nên khả năng quản lý bộ nhớ rất hạn chế, cụ thể khi chạy trên máy có RAM > 512MB nó thường báo lỗi "INSUFFICIENT MEMORY" và dừng chạy. Để khắc phục lỗi này, bạn có thể dùng 1 trong các phương pháp sau:

    1. Gỡ RAM ra khỏi máy, chỉ giữ lại 512MB hay ít hơn. Cách này rất bất tiện, làm máy chạy chậm và nhiều khi không khả thi (nếu dung lượng từng thanh RAM trên máy > 512MB).

    2. Cài và dùng Visual FoxPro version mới hơn. Đây là cách tốt nhất vì các phiên bản mới hơn thường tương thích ngược với phiên bản 3.0 của bạn và còn cung cấp thêm nhiều chức năng mới.

    3. Tạo 1 option boot Windows đặc biệt, option này sẽ hạn chế kích thước RAM mà Windows sẽ dùng để phục vụ tốt cho việc chạy VFP 3.0. Qui trình điển hình để thực hiện phương pháp 3 này như sau:

    - Chạy Windows Explorer (ấn phải chuột button Start, chọn mục Explorer).

    - Chọn Tools.Folder Options để hiển thị cửa sổ "Folder Options", đánh dấu chọn vào mục "Show hidden files and folders", bỏ dấu chọn mục "Hidden protected operating system files", chọn button OK để chấp nhận những thay đổi và trở lại cửa sổ Windows Explorer.

    - Chọn và hiển thị nội dung thư mục gốc của ổ c:\, bạn sẽ thấy có file tên là boot.ini. Đây là file mà bạn sẽ thay đổi nội dung.

    - Mở file boot.ini bằng ứng dụng soạn thảo văn bản nào đó (thí dụ NotePad), nội dung của file boot.ini thường có dạng như sau:

    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

    - Copy toàn bộ mục "multi(0)…." và dán nó vào sau bản gốc (để thêm 1 mục option boot mới).

    - Hiệu chỉnh nội dung chuỗi miêu tả option boot mới tạo ra và thêm tham số "/maxmem=128" vào cuối chuỗi, nội dung kết quả sẽ có dạng sau :

    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP for VFP 3.0" /noexecute=optin /fastdetect /maxmem=128

    - Lưu kết quả lên file c:\boot1.ini (không thể ghi đè lên file boot.ini vì file này đang bị cấm ghi). 

    - Đóng trình soạn thảo lại, mở lại cửa sổ Windows Explorer, hiển thị nội dung thư mục c:\, chọn file boot.ini và xóa nó, rename file boot1.ini thành boot.ini.

    - Boot lại máy, bạn sẽ thấy máy hiển thị menu yêu cầu chọn option boot Windows. Nếu bạn muốn làm việc với VFP 3.0, chọn option boot mới tương ứng với nó. Nếu muốn làm việc với các ứng dụng khác, chọn option boot cũ.

    Lưu ý khi boot Windows với option mới, Windows chỉ sử dụng đúng kích thước RAM qui định trong tham số /maxmem (trong trường hợp trên là 128MB), nhờ đó VFP 3.0 sẽ chạy tốt, không báo lỗi. Tuy nhiên nếu bạn chạy ứng dụng khác thì máy hoạt động rất chậm vì Windows phải "swap" thông tin giữa RAM và đĩa rất nhiều (do dung lượng RAM đang dùng quá ít).

    Chuyên mục: Hệ thống