ما هو العدد المقترح من وحدات البايت في كل مرة لملفات كبيرة جدا بحيث لا يمكن تعيين الذاكرة في وقت واحد؟

StackOverflow https://stackoverflow.com/questions/1031073

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا فتح الملفات باستخدام خريطة الذاكرة. الملفات على ما يبدو كبيرة جدا (6GB على جهاز كمبيوتر 32 بت) ليتم تعيينها في واحدة مضت. لذلك أنا أفكر في رسم الخرائط جزء منه في كل مرة وضبط إزاحة في التعيين القادم.

هل هناك العدد الأمثل من وحدات البايت لكل رسم الخرائط أو هل هناك طريقة لتحديد هذا الرقم؟

وشكرا.

هل كانت مفيدة؟

المحلول

وليس هناك حجم أمثل. مع عملية 32-بت، هناك فقط 4 GB من مجموع مساحة العنوان، وعادة سوى 2 GB متوفرا لعمليات وضع المستخدم. ثم تم تجزئة هذه 2 GB من التعليمات البرمجية والبيانات من إكس وفي DLL، تخصيص كومة الذاكرة المؤقتة، مداخن موضوع، وهلم جرا. ونظرا لهذا، ربما لن تجد أكثر من 1 غيغابايت من مساحة contigous لتعيين ملف في الذاكرة.

ووالعدد الأمثل يعتمد على التطبيق الخاص بك، ولكن أود أن تكون قلقة خرائط أكثر من 512 MB إلى عملية 32-بت. حتى مع الحد من نفسك إلى 512 MB، قد واجهت بعض القضايا اعتمادا على التطبيق الخاص بك. بدلا من ذلك، اذا كان يمكنك الذهاب 64 بت يجب أن يكون هناك رسم الخرائط قضايا متعددة غيغابايت من ملف في الذاكرة - هل تتناول مساحة كبيرة لذلك هذا لا ينبغي أن يسبب أي مشاكل

.

هل يمكن استخدام API مثل VirtualQuery للعثور على أكبر مساحة contigous - ولكن بعد ذلك لديك مما اضطر فعلا من أخطاء الذاكرة أن يحدث كما كنت تقوم بإزالة كميات كبيرة من مساحة عنوان

.

وتحرير: أنا فقط أدركت جوابي هو ويندوز محددة، لكنك لم نظام الأساسي الذي نناقشه. أفترض منصات أخرى لديها العوامل التي تحد مماثلة لملفات الذاكرة المعنونة.

نصائح أخرى

هل يحتاج الملف إلى أن الذاكرة المعينة؟

ولقد تحرير ملفات الفيديو 8GB على 733Mhz PIII (ليس لطيفا، ولكن قابلة للتنفيذ).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top