คำถามติดแท็ก memory-management

กระบวนการจัดสรรและเพิ่มส่วนของหน่วยความจำกายภาพแบบไดนามิกเพื่อตอบสนองต่อคำขอของโปรแกรมด้วยความเป็นธรรมและไม่มีความอดอยากในหมู่ผู้ร้องขอหากเป็นไปได้

8
การจัดการหน่วยความจำ R / ไม่สามารถจัดสรรเวกเตอร์ที่มีขนาด n Mb
ฉันพบปัญหาในการพยายามใช้วัตถุขนาดใหญ่ใน R ตัวอย่างเช่น: > memory.limit(4000) > a = matrix(NA, 1500000, 60) > a = matrix(NA, 2500000, 60) > a = matrix(NA, 3500000, 60) Error: cannot allocate vector of size 801.1 Mb > a = matrix(NA, 2500000, 60) Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore …

3
RAM สูงสุดที่แอปสามารถใช้คืออะไร?
ฉันค่อนข้างสงสัยเกี่ยวกับคำถามนี้เกี่ยวกับการจัดการหน่วยความจำของระบบปฏิบัติการ Androidดังนั้นฉันหวังว่าจะได้คำตอบอย่างละเอียดในหัวข้อนั้น สิ่งที่ฉันอยากรู้ อะไรคือจำนวนเงินสูงสุดของหน่วยความจำ (ในเมกะไบต์ / เป็น ร้อยละของจำนวน RAM) ที่การประยุกต์ใช้ Android (ที่ไม่ได้เป็น app ระบบ) สามารถใช้งานหรือไม่ มีความแตกต่างระหว่างเวอร์ชั่น Androidหรือไม่? มีความแตกต่างใด ๆ เกี่ยวกับผู้ผลิตอุปกรณ์หรือไม่ และที่สำคัญที่สุด: อะไรที่ถูกพิจารณา / ขึ้นอยู่กับว่ามันมาถึงระบบเมื่อไรที่แรมใช้งานแอพได้เท่าไร (สมมติว่าหน่วยความจำสูงสุดต่อแอพนั้นไม่ใช่จำนวนคงที่)? สิ่งที่ฉันเคยได้ยินจนถึง (2013 จนถึง): อุปกรณ์ Android ยุคแรก ๆ มีขนาดสูงสุด 16 เมกะไบต์ต่อแอป หลังจากนี้ขีด จำกัด นี้เพิ่มเป็น 24MB หรือ 32MB อะไรทำให้ฉันอยากรู้มาก: ขีด จำกัด ทั้งสองนี้ต่ำมาก ฉันเพิ่งดาวน์โหลดAndroid Task Managerเพื่อตรวจสอบ RAM อุปกรณ์ของฉัน …

8
การใช้ IDisposable อย่างถูกต้อง
ในชั้นเรียนของฉันฉันใช้ IDisposable ดังนี้ public class User : IDisposable { public int id { get; protected set; } public string name { get; protected set; } public string pass { get; protected set; } public User(int UserID) { id = UserID; } public User(string Username, string Password) { name = Username; …

26
พยายามอ่านหรือเขียนหน่วยความจำที่ได้รับการป้องกัน นี่เป็นข้อบ่งชี้ว่าหน่วยความจำอื่นเสียหาย
ฉันหวังว่าบางคนสามารถให้ความรู้แก่ฉันเกี่ยวกับสิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้: พยายามอ่านหรือเขียนหน่วยความจำที่ได้รับการป้องกัน นี่เป็นข้อบ่งชี้ว่าหน่วยความจำอื่นเสียหาย ฉันไม่สามารถโพสต์รหัสได้เพราะข้อผิดพลาดนี้ดูเหมือนจะถูกโยนทิ้งในพื้นที่สุ่ม ๆ ของแอปพลิเคชัน แอปพลิเคชันจะทำงานที่ใดก็ได้จาก 12-48 ชั่วโมงก่อนที่จะเกิดข้อผิดพลาด บางครั้งมันจะหยุดในจุดสุ่มที่ดูเหมือนและโยนข้อผิดพลาดด้านบนครั้งอื่น ๆ ที่แอปพลิเคชันทั้งหมดหยุดและฉันได้รับหน้าจอที่มีข้อผิดพลาดที่บอกบางอย่างตามแนวของ "มีข้อผิดพลาดร้ายแรงใน ... บั๊กใน CLR หรือ ... "บางอย่างเกี่ยวกับ PInvoke หรือข้อมูลอื่น ๆ ที่ไม่เกี่ยวข้อง เมื่อสิ่งนี้เกิดขึ้นเธรดทั้งหมดจะถูกยกเลิกและไม่มีข้อมูลการดีบัก สรุปนี่คือสิ่งที่แอปพลิเคชันทำ: มันเป็นแอพพลิเคชันเซิร์ฟเวอร์แบบมัลติเธรดที่เขียนด้วยภาษา C # ทั้งหมด ลูกค้าเชื่อมต่อกับเซิร์ฟเวอร์ผ่านซ็อกเก็ต เซิร์ฟเวอร์จะใช้ "สภาพแวดล้อม" เสมือนจริงสำหรับลูกค้าที่พวกเขาสามารถโต้ตอบกันและสิ่งแวดล้อม ใช้หน่วยความจำไม่มาก แต่ฉันไม่เห็นว่ามันรั่ว โดยทั่วไปแล้วจะใช้ประมาณ 1.5GB ฉันไม่คิดว่ามันจะรั่วเพราะการใช้หน่วยความจำค่อนข้างคงที่ตลอดเวลาที่แอปพลิเคชันทำงานอยู่ มันใช้รหัสอย่างต่อเนื่องเพื่อรักษาสภาพแวดล้อมแม้ว่าลูกค้าจะไม่ทำอะไรเลย มันไม่ใช้ซอฟต์แวร์บุคคลที่สามหรือ API อื่น ๆ ทรัพยากรภายนอกเท่านั้นที่แอปพลิเคชันนี้ใช้คือการเชื่อมต่อซ็อกเก็ตและการเชื่อมต่อฐานข้อมูล SQL มันทำงานบนเซิร์ฟเวอร์ 64 บิต ฉันได้ลองแก้ไขข้อบกพร่องนี้ใน VS2008 …


8
ที่อยู่หน่วยความจำของตัวแปรใน Java
โปรดดูภาพด้านล่าง เมื่อเราสร้างวัตถุใน java ด้วยnewคำหลักเราจะได้รับที่อยู่หน่วยความจำจากระบบปฏิบัติการ เมื่อเราเขียนout.println(objName)เราจะเห็นสตริง "พิเศษ" เป็นผลลัพธ์ คำถามของฉันคือ: ผลลัพธ์นี้คืออะไร หากเป็นที่อยู่หน่วยความจำที่ระบบปฏิบัติการมอบให้เรา: a) ฉันจะแปลงสตริงนี้เป็นไบนารีได้อย่างไร b) ฉันจะรับที่อยู่ตัวแปรจำนวนเต็มหนึ่งตัวได้อย่างไร

10
การลดการใช้หน่วยความจำ Django ผลไม้แขวนต่ำ?
การใช้หน่วยความจำของฉันเพิ่มขึ้นเมื่อเวลาผ่านไปและการรีสตาร์ท Django นั้นไม่เหมาะสำหรับผู้ใช้ ฉันไม่แน่ใจว่าจะทำอย่างไรเกี่ยวกับการทำโปรไฟล์การใช้หน่วยความจำ แต่เคล็ดลับเกี่ยวกับวิธีเริ่มการวัดจะมีประโยชน์ ฉันมีความรู้สึกว่ามีขั้นตอนง่ายๆที่สามารถสร้างผลกำไรจำนวนมาก การตรวจสอบให้แน่ใจว่า 'debug' ถูกตั้งค่าเป็น 'False' เป็นปัญหาที่เห็นได้ชัด ใครสามารถแนะนำคนอื่นได้บ้าง การปรับปรุงจะแคชเว็บไซต์ที่มีอัตราการเข้าชมต่ำเท่าใด ในกรณีนี้ฉันใช้งาน Apache 2.x กับ mod_python ฉันได้ยินมาว่า mod_wsgi นั้นค่อนข้างผอม แต่มันก็เป็นเรื่องยากที่จะสลับมาที่ขั้นนี้เว้นแต่ว่าฉันรู้ว่าผลกำไรจะมีความสำคัญ แก้ไข: ขอบคุณสำหรับเคล็ดลับจนถึง ข้อเสนอแนะวิธีการค้นหาสิ่งที่ใช้หน่วยความจำ? มีคำแนะนำในการทำโปรไฟล์หน่วยความจำ Python หรือไม่? นอกจากนี้ตามที่กล่าวมามีบางสิ่งที่จะทำให้ยากที่จะเปลี่ยนไปใช้ mod_wsgi ดังนั้นฉันต้องการมีความคิดเกี่ยวกับกำไรที่ฉันคาดหวังก่อนที่จะไถไปข้างหน้าในทิศทางนั้น แก้ไข: Carl โพสต์การตอบกลับที่มีรายละเอียดเพิ่มเติมเล็กน้อยที่นี่ซึ่งควรค่าแก่การอ่าน: การปรับใช้ Django: การตัด Overhead ของ Apache แก้ไข: บทความของ Graham Dumpleton เป็นบทความที่ดีที่สุดที่ฉันพบใน MPM และ mod_wsgi ฉันค่อนข้างผิดหวังที่ไม่มีใครสามารถให้ข้อมูลเกี่ยวกับการดีบักการใช้หน่วยความจำในแอปได้ แก้ไขครั้งสุดท้าย:ฉันได้คุยเรื่องนี้กับ …


5
จะตั้งค่าการใช้งานหน่วยความจำสูงสุดสำหรับ JVM ได้อย่างไร?
ฉันต้องการ จำกัด หน่วยความจำสูงสุดที่ใช้โดย JVM หมายเหตุนี่ไม่ใช่แค่ฮีปฉันต้องการ จำกัด หน่วยความจำทั้งหมดที่ใช้โดยกระบวนการนี้

6
Visual Studio ทำอะไรกับตัวชี้ที่ถูกลบและทำไม?
หนังสือ C ++ ที่ฉันอ่านระบุว่าเมื่อตัวชี้ถูกลบโดยใช้deleteโอเปอเรเตอร์หน่วยความจำในตำแหน่งที่ชี้ไปนั้น "ว่าง" และสามารถเขียนทับได้ NULLนอกจากนี้ยังระบุว่าตัวชี้จะยังคงชี้ไปที่สถานที่เดียวกันจนกว่าจะมีพระราชเสาวนีย์หรือตั้งค่า ใน Visual Studio 2012 อย่างไรก็ตาม ดูเหมือนจะไม่เป็นเช่นนั้น! ตัวอย่าง: #include <iostream> using namespace std; int main() { int* ptr = new int; cout << "ptr = " << ptr << endl; delete ptr; cout << "ptr = " << ptr << endl; system("pause"); return 0; …

29
หลักเกณฑ์ทั่วไปเพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำใน C ++ [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา มีเคล็ดลับทั่วไปอะไรบ้างเพื่อให้แน่ใจว่าหน่วยความจำในโปรแกรม C ++ ไม่รั่วไหล ฉันจะทราบได้อย่างไรว่าใครควรเพิ่มหน่วยความจำที่ได้รับการจัดสรรแบบไดนามิก

9
คอมไพเลอร์จะเริ่มต้นหน่วยความจำเป็น 0xCD, 0xDD และอื่น ๆ บน malloc / free / new / delete เมื่อใดและทำไม
ฉันรู้ว่าบางครั้งคอมไพเลอร์จะเริ่มต้นหน่วยความจำด้วยรูปแบบบางอย่างเช่น0xCDและ0xDD. สิ่งที่ฉันอยากรู้คือจะเกิดขึ้นเมื่อไหร่และทำไม เมื่อไหร่ สิ่งนี้เฉพาะสำหรับคอมไพเลอร์ที่ใช้หรือไม่? ทำmalloc/newและfree/deleteทำงานในลักษณะเดียวกันในเรื่องนี้หรือไม่? เป็นแพลตฟอร์มเฉพาะหรือไม่? มันจะเกิดขึ้นบนระบบปฏิบัติการอื่นเช่นLinuxหรือVxWorks? ทำไม ความเข้าใจของฉันคือสิ่งนี้เกิดขึ้นเฉพาะในWin32การกำหนดค่าการดีบักและใช้เพื่อตรวจจับการใช้หน่วยความจำมากเกินไปและเพื่อช่วยคอมไพลเลอร์ตรวจจับข้อยกเว้น คุณช่วยยกตัวอย่างที่ใช้ได้จริงว่าการเริ่มต้นนี้มีประโยชน์อย่างไร ฉันจำได้ว่าอ่านบางอย่าง (อาจอยู่ใน Code Complete 2) โดยบอกว่าเป็นการดีที่จะเริ่มต้นหน่วยความจำเป็นรูปแบบที่รู้จักเมื่อจัดสรรและรูปแบบบางอย่างจะทริกเกอร์การขัดจังหวะWin32ซึ่งจะส่งผลให้มีข้อยกเว้นที่แสดงในดีบักเกอร์ พกพาสะดวกขนาดนี้?

4
การปล่อยหน่วยความจำใน Python
ฉันมีคำถามที่เกี่ยวข้องสองสามข้อเกี่ยวกับการใช้หน่วยความจำในตัวอย่างต่อไปนี้ ถ้าฉันทำงานในล่าม foo = ['bar' for _ in xrange(10000000)] 80.9mbหน่วยความจำที่ใช้จริงในเครื่องของฉันจะไปถึง ฉันแล้ว del foo หน่วยความจำที่แท้จริงลงไป 30.4mbแต่เพียงเพื่อ ล่ามใช้4.4mbพื้นฐานดังนั้นข้อได้เปรียบในการไม่ปล่อย26mbหน่วยความจำไปยัง OS คืออะไร? เป็นเพราะ Python กำลัง "วางแผนล่วงหน้า" โดยคิดว่าคุณอาจใช้หน่วยความจำมากขนาดนั้นอีกครั้งหรือไม่? ทำไมถึงปล่อย50.5mbโดยเฉพาะ - จำนวนเงินที่ปล่อยตาม? มีวิธีบังคับให้ Python ปล่อยหน่วยความจำทั้งหมดที่ใช้ไป (ถ้าคุณรู้ว่าจะไม่ใช้หน่วยความจำมากขนาดนั้นอีก)? หมายเหตุ คำถามนี้แตกต่างจากฉันจะว่างหน่วยความจำอย่างชัดเจนใน Python ได้อย่างไร เนื่องจากคำถามนี้เกี่ยวข้องกับการเพิ่มการใช้หน่วยความจำจากพื้นฐานเป็นหลักแม้ว่าล่ามจะปลดปล่อยอ็อบเจ็กต์ผ่านการรวบรวมขยะgc.collectแล้วก็ตาม(โดยใช้หรือไม่ก็ตาม)

12
ทำไมไม่ลบตั้งค่าตัวชี้เป็น NULL?
ฉันสงสัยเสมอว่าทำไมการตั้งค่าตัวชี้เป็น NULL โดยอัตโนมัติหลังจากลบไม่ได้เป็นส่วนหนึ่งของมาตรฐาน หากได้รับการดูแลแล้วข้อขัดข้องจำนวนมากเนื่องจากตัวชี้ที่ไม่ถูกต้องจะไม่เกิดขึ้น แต่ต้องบอกว่าฉันคิดได้ว่าทำไมมาตรฐานถึง จำกัด สิ่งนี้: ประสิทธิภาพ: คำแนะนำเพิ่มเติมอาจทำให้deleteประสิทธิภาพช้าลง อาจเป็นเพราะพconstอยน์เตอร์ จากนั้นอีกครั้งมาตรฐานอาจทำอะไรบางอย่างสำหรับกรณีพิเศษนี้ฉันเดา ไม่มีใครรู้เหตุผลที่แน่นอนที่ไม่อนุญาตให้ทำเช่นนี้?

2
รอยเท้าหน่วยความจำของชนิดข้อมูล Haskell
ฉันจะหาจำนวนหน่วยความจำจริงที่ต้องใช้ในการจัดเก็บค่าของข้อมูลบางประเภทใน Haskell (ส่วนใหญ่เป็น GHC) ได้อย่างไร เป็นไปได้ไหมที่จะประเมินที่รันไทม์ (เช่นใน GHCi) หรือสามารถประเมินความต้องการหน่วยความจำของชนิดข้อมูลผสมจากส่วนประกอบได้หรือไม่ โดยทั่วไปหากทราบข้อกำหนดของหน่วยความจำประเภทaและbค่าใช้จ่ายของหน่วยความจำประเภทข้อมูลพีชคณิตเช่น: data Uno = Uno a data Due = Due a b ตัวอย่างเช่นค่าเหล่านี้ใช้หน่วยความจำกี่ไบต์? 1 :: Int8 1 :: Integer 2^100 :: Integer \x -> x + 1 (1 :: Int8, 2 :: Int8) [1] :: [Int8] Just (1 :: Int8) Nothing …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.