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

หน่วยความจำหมายถึงอุปกรณ์ทางกายภาพที่ใช้ในการจัดเก็บโปรแกรมหรือข้อมูลบนพื้นฐานชั่วคราวหรือถาวรสำหรับใช้ในคอมพิวเตอร์หรืออุปกรณ์อิเล็กทรอนิกส์ดิจิตอลอื่น ๆ

11
มันจะมีประสิทธิภาพมากขึ้นสำหรับระบบโดยทั่วไปที่จะทำอะไรกับ Stacks และเพียงแค่ใช้ Heap สำหรับการจัดการหน่วยความจำ
ฉันคิดว่าทุกอย่างที่สามารถทำได้ด้วย stack สามารถทำได้ด้วย heap แต่ไม่ใช่ทุกสิ่งที่สามารถทำได้ด้วย heap ที่สามารถทำได้ด้วย stack ถูกต้องหรือไม่ แล้วเพื่อความเรียบง่ายและแม้ว่าเราจะสูญเสียประสิทธิภาพเล็กน้อยไปกับปริมาณงานบางอย่างมันจะดีกว่าไหมที่จะไปกับมาตรฐานเดียว (เช่นกอง)? คิดถึงการแลกเปลี่ยนระหว่างโมดุลและประสิทธิภาพ ฉันรู้ว่าไม่ใช่วิธีที่ดีที่สุดในการอธิบายสถานการณ์นี้ แต่โดยทั่วไปดูเหมือนว่าความเข้าใจและการออกแบบที่เรียบง่ายอาจเป็นตัวเลือกที่ดีกว่าแม้ว่าจะมีศักยภาพสำหรับประสิทธิภาพที่ดีขึ้น
14 memory 

3
จัดเก็บค่าลบที่เซ็นชื่ออย่างไร
ฉันกำลังดูวิดีโอนี้เกี่ยวกับค่าสูงสุดและต่ำสุดของจำนวนเต็มที่ลงนามแล้ว นำตัวอย่างของค่าที่มีเครื่องหมายบวก - 0000 0001 บิตแรกแสดงว่าจำนวนเป็นค่าบวกและ 7 บิตสุดท้ายเป็นตัวเลขเอง ดังนั้นจึงตีความได้ง่ายว่า +1 ทีนี้ลองดูตัวอย่างค่าลบที่มีเครื่องหมาย - 1,000 0000 ซึ่งออกมาเป็น -8 โอเคคอมพิวเตอร์สามารถเข้าใจได้ว่ามันเป็นค่าลบเพราะบิตแรก แต่มันเข้าใจได้อย่างไรว่า 000 0000 หมายถึง -8? โดยทั่วไปแล้วค่าจัดเก็บข้อมูลเชิงลบที่เก็บ / ตีความในคอมพิวเตอร์เป็นอย่างไร

2
เหตุใดคลาสพื้นฐานจำเป็นต้องมี destructor เสมือนจริงที่นี่ถ้าคลาสที่ได้รับจัดสรรหน่วยความจำแบบไดนามิกดิบไม่ได้?
รหัสต่อไปนี้ทำให้หน่วยความจำรั่ว: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { vec.push_back(i); } } }; …

2
Smalltalk ใช้ 'สิ่งที่เป็นประโยชน์' ได้บ้าง
become:ข้อความในสมอลล์ทอล์คเป็นสาเหตุหนึ่งวัตถุมีการเปลี่ยนแปลงไปยังอีกที่มีผลต่อการอ้างอิงถึงมัน คุณสมบัติภาษานี้มีประโยชน์อะไรบ้าง? มันใช้ในรหัสจริงหรือไม่ มันเป็นแค่อยากรู้อยากเห็น? ถือว่าเป็นการฝึกที่ดี / ไม่ดีใช่ไหม?

3
Foreach loop และการกำหนดค่าเริ่มต้นตัวแปร
มีความแตกต่างระหว่างโค้ดสองเวอร์ชันนี้หรือไม่? foreach (var thing in things) { int i = thing.number; // code using 'i' // pay no attention to the uselessness of 'i' } int i; foreach (var thing in things) { i = thing.number; // code using 'i' } คอมไพเลอร์ไม่สนใจหรือ? เมื่อฉันพูดถึงความแตกต่างฉันหมายถึงในแง่ของประสิทธิภาพและการใช้หน่วยความจำ .. หรือโดยทั่วไปเพียงแค่ความแตกต่างใด ๆ หรือทำสองท้ายเป็นรหัสเดียวกันหลังจากรวบรวม?
11 c#  performance  memory 

2
ประสิทธิภาพหน่วยความจำของ Haskell - วิธีไหนดีกว่ากัน?
เรากำลังใช้ไลบรารีการบีบอัดเมทริกซ์โดยยึดตามไวยากรณ์ไวยากรณ์สองมิติที่ได้รับการแก้ไข ตอนนี้เรามีสองวิธีสำหรับประเภทข้อมูลของเรา - วิธีใดจะดีกว่าในกรณีที่ใช้หน่วยความจำ (เราต้องการบีบอัดบางอย่าง;)) ไวยากรณ์ประกอบด้วย NonTerminals ที่มี 4 โปรดักชั่นหรือเทอร์มินัลทางด้านขวามือ เราจะต้องใช้ชื่อของโปรดักชั่นเพื่อการตรวจสอบความเท่าเทียมกันและการย่อเล็กสุดไวยากรณ์ ครั้งแรก: -- | Type synonym for non-terminal symbols type NonTerminal = String -- | Data type for the right hand side of a production data RightHandSide = DownStep NonTerminal NonTerminal NonTerminal NonTerminal | Terminal Int -- | Data type …

3
หนึ่งจะไปเกี่ยวกับการอ่านหน่วยความจำจากกระบวนการได้อย่างไร มันแตกต่างจากระบบปฏิบัติการหรือไม่
ในฐานะนักพัฒนาเว็บที่มีประสบการณ์ แต่เป็นโปรแกรมเมอร์ "ระดับต่ำ" สามเณรสิ่งนี้เป็นสิ่งที่ฉันยังคงทำขึ้นอยู่ ฉันอยากรู้ว่าจะเริ่มค้นหาบล็อกหน่วยความจำได้อย่างไรแล้วอ่านมัน (เช่นอ่านตัวจับเวลาในเกมของเหมือง)? สิ่งนี้แตกต่างจากเวอร์ชั่น OS / OS หรือไม่?

3
เลือก C ++ หรือ Java สำหรับแอปพลิเคชันที่ต้องการ RAM จำนวนมากใช่ไหม [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังคิดถึงแอปพลิเคชันทางวิทยาศาสตร์ที่ส่วนใหญ่ใช้โปรเซสเซอร์และมีน้ำหนักมากในการใช้งานฮีป (อย่างน้อยหลายกิกะไบต์) ช่วงเวลาอื่นของปีที่ฉันจะไปกับ C ++ อย่างมีความสุข แต่ในกรณีนี้ฉันสงสัยว่าการกระจายตัวตามธรรมชาติของตัวจัดการหน่วยความจำ C ++ อาจเป็นปัญหาร้ายแรงเมื่อเทียบกับข้อดีของตัวสะสมขนาดกะทัดรัดของ Java ใครสามารถชี้ให้เห็นตัวอย่างที่แท้จริงเกี่ยวกับสิ่งนี้
11 java  c++  memory  big-data 

2
มีการศึกษาเปรียบเทียบการใช้หน่วยความจำของภาษาการเขียนโปรแกรมรันไทม์ที่สัมพันธ์กับการแสดงออกและอัตราส่วนการผลิตข้อบกพร่อง? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา มีการศึกษาเปรียบเทียบจำนวนมากและมีให้ทางออนไลน์เมื่อพูดถึงประสิทธิภาพรันไทม์ของแอพพลิเคชั่นที่สร้างขึ้นโดยใช้ภาษาเดียวหรืออีกภาษาหนึ่ง บางคนขับเคลื่อนโดย บริษัท นักวิชาการบางคนรายงานการทดลองส่วนตัวบางอย่าง นอกจากนี้เรายังได้รับส่วนแบ่งที่ดีจากการศึกษาเปรียบเทียบผลข้างเคียงของภาษาการเขียนโปรแกรมและการใช้เครื่องมือเช่น: สร้างครั้ง โอกาสในการตรวจจับข้อผิดพลาดหลังการผลิต พลังการแสดงออก ฯลฯ ... อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันได้รับความเสียหายจากการใช้หน่วยความจำของโปรแกรมของฉันมากกว่าสิ่งอื่นใด นี่อาจมาจากความจริงที่ว่าในขณะที่กฎของมัวร์อยู่ข้างเราเพื่อให้ได้ประสิทธิภาพที่ดิบเราได้ตระหนักว่าคอขวดอื่น ๆ และฉันมักจะไม่อัปเดตฮาร์ดแวร์ของฉันทุกครั้งและฉันมี "เก่า" บางอย่าง (อ่าน 2005-2006 3.6GHz Pentium 4 พร้อม 4GB of RAM) ซึ่งปัจจุบันยากที่จะถูกใช้งานสำหรับแอปพลิเคชันขนาดใหญ่ที่ไม่มี ทำให้ฉันต้องเจอกับปัญหาอย่างมากในการบีบน้ำผลไม้ออกเล็กน้อย (ตัวเลือกของ OS, UI, tweaking ของบริการและ daemons ทางเลือกของแอปพลิเคชันที่จะใช้สำหรับงานหรืออื่น ... ) ค่อนข้างตรงไปตรงมาบางครั้งฉันก็โกรธtopหรือprocexpร้องไห้เมื่อเห็นความทรงจำที่ใช้โดยโปรแกรมที่ไร้เดียงสาที่สุด …

1
ทำไมหน่วยความจำหลักสำหรับการจัดสรรวัตถุจึงเรียกว่า 'ฮีป'
มีใครมีความคิดว่าเหตุใดพื้นที่ของหน่วยความจำหลักที่มีการจัดสรรออบเจ็กต์นั้นเรียกว่าฮีป ฉันเข้าใจเหตุผลของสแต็ค LIFO แต่อยากรู้ว่าเหตุผลคืออะไรสำหรับชื่อ 'heap'

11
บิตแมปไม่มีที่สิ้นสุด [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันต้องการสร้างบิตแมประหว่างรันไทม์ บิตแมปควรปรับขนาดได้ในทุกด้านและการเข้าถึงพิกเซลควรมีประสิทธิภาพที่เงียบ ภาพประกอบบางส่วน http://img546.imageshack.us/img546/4995/maptm.jpg ระหว่างและหลังคำสั่งที่แสดงในภาพ Map.setPixel () และ Map.getPixel () ควรตั้ง / ส่งคืนข้อมูลที่บันทึกในบิตแมป ฉันไม่ได้คาดหวังว่าการใช้งานเป็นเพียงแนวคิดในการจัดสรรหน่วยความจำในลักษณะที่ setPixel () / getPixel นั้นเร็วที่สุด
10 concepts  memory 

6
เธรดใช้หน่วยความจำเสมือนหรือหน่วยความจำจริงหรือไม่?
ฉันพยายามเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Linux ของฉันเพื่อจัดการ 10,000 เธรดต่อกระบวนการในขณะที่มันเพิ่ง 382 ในขณะนี้ ตามบทความนี้จะใช้สูตรต่อไปนี้เพื่อค้นหาเธรดที่เป็นไปได้ทั้งหมด: number of threads = total virtual memory / (stack size*1024*1024) ซึ่งหมายความว่าเธรดจะเก็บข้อมูลทั้งหมดไว้ในหน่วยความจำเสมือน และเพื่อความรู้ที่ดีที่สุดของฉันหน่วยความจำเสมือนคือพื้นที่สว็อปในเครื่อง Linux ซึ่งเก็บไว้ในฮาร์ดดิสก์มากกว่า RAM หรือแคช ดังนั้นคำถามของฉันคือเธรดของเราใช้ harddisk เพื่อเก็บประมวลผล / เก็บข้อมูล ถ้าใช่แล้วประสิทธิภาพนี้จะไม่ได้ผลหรือไม่? เราสามารถปรับปรุงประสิทธิภาพโดยการใส่ไว้ใน RAM หรือแคชได้หรือไม่? อย่างไร? ถ้าไม่มีเธรดทำงานอย่างไร ปรับปรุง: ตามคำตอบที่ไร้ประโยชน์หน่วยความจำเสมือนเป็นระบบที่ประกอบด้วย: หน่วยความจำกายภาพ (RAM) swapfiles ใด ๆ ที่คุณแนบ การสนับสนุนฮาร์ดแวร์สำหรับการแปลที่อยู่เสมือนจริงไปยังที่อยู่จริงและการออกหน้าผิดพลาดเมื่อไม่มีที่อยู่เสมือนในหน่วยความจำกายภาพ ซอฟต์แวร์สนับสนุน (เคอร์เนล) สำหรับ: การจัดการตารางการค้นหาที่ใช้โดยฮาร์ดแวร์นั้นที่จัดการข้อบกพร่องของหน้าเหล่านั้นโดยการดึงหน้าเข้าจาก swap ตามต้องการ …

1
ความสัมพันธ์ระหว่างสายแคชและหน้าหน่วยความจำ
หากฉันถูกต้องหน้าในหน่วยความจำหลักเป็นหน่วยที่เล็กที่สุดสำหรับการถ่ายโอนข้อมูลระหว่างหน่วยความจำหลักและอุปกรณ์เก็บข้อมูลภายนอกเช่นฮาร์ดดิสก์ บรรทัดแคชของหน่วยความจำหลักเป็นหน่วยที่เล็กที่สุดสำหรับการถ่ายโอนข้อมูลระหว่างหน่วยความจำหลักและ cpu แคช ฉันสงสัยว่าขนาดหน้ากระดาษอยู่เสมอหรือดีที่สุดที่จะเป็นขนาดแคชของจำนวนบรรทัดปกติหรือไม่ หากขนาดบรรทัดแคชคือ 64 ไบต์และขนาดหน้าหน่วยความจำคือ 4KB ดังนั้นแต่ละหน้าจะมี 4KB / 64 ไบต์ == 64 บรรทัดแคชในนั้น หน้าและบรรทัดแคชทั้งวัตถุคงที่ในหน่วยความจำหรือไม่? หรือพวกเขาเป็นเพียงบล็อกที่ต่อเนื่องกันของหน่วยความจำขนาดหนึ่งซึ่งสามารถเริ่มต้นและลอยได้ทุกที่ภายในหน่วยความจำ เป็นเสมอหรือไม่ที่บรรทัดแคชไม่สามารถขยายได้มากกว่าหนึ่งหน้านั่นคือส่วนหนึ่งของบรรทัดแคชอยู่ในหน้าหนึ่งและอีกส่วนหนึ่งของบรรทัดแคชอยู่ในหน้าอื่นหรือไม่ ขอบคุณ
9 memory  caching 

5
กำจัดวัตถุอย่างถูกต้องเมื่อเซิร์ฟเวอร์ถูกยกเลิก
ฉันกำลังทำงานในโครงการ C ++ ขนาดใหญ่ ประกอบด้วยในเซิร์ฟเวอร์ที่เปิดเผย REST API ให้ส่วนติดต่อที่เรียบง่ายและใช้งานง่ายสำหรับระบบที่กว้างมากซึ่งประกอบด้วยเซิร์ฟเวอร์อื่น ๆ codebase นั้นค่อนข้างใหญ่และซับซ้อนและพัฒนาไปตามกาลเวลาโดยไม่มีการออกแบบที่เหมาะสม งานของฉันคือการใช้คุณสมบัติใหม่และ refactor / แก้ไขรหัสเก่าเพื่อให้มีเสถียรภาพและเชื่อถือได้มากขึ้น ในขณะนี้เซิร์ฟเวอร์สร้างวัตถุที่มีอายุยืนยาวจำนวนหนึ่งซึ่งไม่เคยยกเลิกหรือกำจัดเมื่อกระบวนการยุติลง สิ่งนี้ทำให้ Valgrind เกือบจะใช้การไม่ได้สำหรับการตรวจจับการรั่วไหลเนื่องจากเป็นไปไม่ได้ที่จะแยกแยะระหว่างการรั่วไหลที่ถูกต้องตามกฎหมายนับพันจากการ "ที่อันตราย" ความคิดของฉันคือการตรวจสอบให้แน่ใจว่าวัตถุทั้งหมดถูกกำจัดก่อนที่จะถูกยกเลิก แต่เมื่อฉันทำข้อเสนอนี้เพื่อนร่วมงานและเจ้านายของฉันไม่เห็นด้วยฉันชี้ให้เห็นว่าระบบปฏิบัติการจะเพิ่มหน่วยความจำนั้นต่อไป จะทำให้การปิดเซิร์ฟเวอร์ช้าลง (ซึ่งในขณะนี้เป็นการเรียกไปยังstd::exit) ฉันตอบว่าการมีขั้นตอนการปิด "สะอาด" ไม่ได้แปลว่าต้องใช้ เราสามารถโทรstd::quick_exitหรือkill -9ดำเนินการได้ตลอดเวลาหากเรารู้สึกใจร้อน พวกเขาตอบว่า "daemons Linux และกระบวนการส่วนใหญ่ไม่ต้องกังวลเรื่องการเพิ่มหน่วยความจำเมื่อปิดเครื่อง" ในขณะที่ฉันเห็นว่ามันเป็นความจริงที่ว่าโครงการของเราต้องการการแก้ไขข้อบกพร่องของหน่วยความจำที่แม่นยำเนื่องจากฉันได้พบความผิดพลาดของหน่วยความจำดับเบิ้ลอิสระและตัวแปรเริ่มต้น คุณคิดยังไง? ฉันกำลังพยายามอย่างไม่มีจุดหมายหรือไม่? ถ้าไม่ฉันจะโน้มน้าวใจเพื่อนร่วมงานและเจ้านายของฉันได้อย่างไร ถ้าเป็นเช่นนั้นทำไมและควรทำอย่างไร
9 c++  debugging  memory 

2
มีทางเลือกอื่นสำหรับสแต็ก + ฮีป + โมเดลหน่วยความจำสแตติก
โปรแกรมทั้งหมดที่ฉันได้เห็นจัดระเบียบหน่วยความจำข้อมูลลงในสแต็คการโทรหนึ่งครั้งขึ้นไป (ปกติขนาดคงที่ แต่บางครั้งก็ไม่ใช่) ฮีปและหน่วยความจำแบบสแตติก เมื่อเร็ว ๆ นี้ที่จัดเก็บแบบคงที่ของเธรดแบบโลคัลถูกเพิ่มเข้ากับสิ่งนี้เช่นกัน มีความพยายามใด ๆ ในการจัดระเบียบเค้าโครงหน่วยความจำข้อมูลด้วยวิธีที่แตกต่างอย่างสิ้นเชิงเช่นไม่มี call stack หรือไม่? หรือจัดระเบียบหน่วยความจำในวิธีอื่นที่ทำสิ่งเดียวกันสำเร็จ?

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