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

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

11
การลบวัตถุใน JavaScript
ฉันสับสนกับdeleteโอเปอเรเตอร์ของ JavaScript รับรหัสต่อไปนี้: var obj = { helloText: "Hello World!" }; var foo = obj; delete obj; หลังจากชิ้นส่วนของรหัสนี้ได้รับการดำเนินการobjเป็นnullแต่ยังหมายถึงวัตถุที่ว่าเหมือนfoo objฉันเดาว่าวัตถุนี้เป็นวัตถุเดียวกับที่fooชี้ไป สับสนนี้เราเพราะเราคาดว่าการเขียนที่delete objถูกลบวัตถุที่ถูกชี้ไปในหน่วยความจำที่ไม่ได้เป็นเพียงตัวแปรobjobj นี่เป็นเพราะ Garbage Collector ของจาวาสคริปต์ทำงานบนการรักษา / ปล่อยดังนั้นถ้าฉันไม่มีตัวแปรอื่น ๆ ที่ชี้ไปที่วัตถุมันจะถูกลบออกจากหน่วยความจำ? (โดยวิธีการทดสอบของฉันเสร็จใน Safari 4)


8
การใช้“ ใหม่” ในโครงสร้างจัดสรรบนกองหรือกองหรือไม่
เมื่อคุณสร้างอินสแตนซ์ของคลาสด้วยnewโอเปอเรเตอร์หน่วยความจำจะได้รับการจัดสรรบนฮีป เมื่อคุณสร้างอินสแตนซ์ของโครงสร้างด้วยตัวnewดำเนินการที่หน่วยความจำได้รับการจัดสรรบนกองหรือกอง?


21
ขนาดหน่วยความจำที่อนุญาตของ 33554432 ไบต์หมดลง (พยายามจัดสรร 43148176 ไบต์) ใน php
ข้อความแสดงข้อผิดพลาดนี้กำลังถูกนำเสนอคำแนะนำใด ๆ ? ขนาดหน่วยความจำที่อนุญาตของ 33554432 ไบต์หมดลง (พยายามจัดสรร 43148176 ไบต์) ใน php

13
malloc () และ free () ทำงานอย่างไร
ฉันต้องการทราบวิธีการmallocและการfreeทำงาน int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } ฉันจะขอบคุณจริง ๆ ถ้าคำตอบอยู่ในระดับความลึกในระดับหน่วยความจำถ้าเป็นไปได้

14
วิธีการใช้ Inode ฟรี
ฉันมีดิสก์ไดรฟ์ที่ใช้ inode 100% (ใช้df -iคำสั่ง) อย่างไรก็ตามหลังจากลบไฟล์อย่างมีนัยสำคัญการใช้งานยังคงอยู่ 100% แล้ววิธีที่ถูกต้องในการทำคืออะไร? เป็นไปได้อย่างไรที่ดิสก์ไดรฟ์ที่มีการใช้พื้นที่ดิสก์น้อยกว่าสามารถมีการใช้งานไอโหนดสูงกว่าดิสก์ไดรฟ์ที่มีการใช้พื้นที่ดิสก์มากขึ้น เป็นไปได้หรือไม่ถ้าฉันซิปไฟล์จำนวนมากที่จะลดจำนวน inode ที่ใช้ไป

12
หน่วยความจำทั้งหมดที่ใช้โดยกระบวนการ Python?
มีวิธีใดบ้างที่โปรแกรม Python จะพิจารณาจำนวนหน่วยความจำที่ใช้อยู่ในปัจจุบัน? ฉันเคยเห็นการสนทนาเกี่ยวกับการใช้หน่วยความจำสำหรับวัตถุเดียว แต่สิ่งที่ฉันต้องการคือการใช้หน่วยความจำทั้งหมดสำหรับกระบวนการเพื่อให้ฉันสามารถกำหนดได้ว่าเมื่อใดที่จำเป็นต้องเริ่มทิ้งข้อมูลแคช

6
C ++ ใหม่ int [0] - มันจะจัดสรรหน่วยความจำหรือไม่
แอปทดสอบอย่างง่าย: cout << new int[0] << endl; เอาท์พุท: 0x876c0b8 ดังนั้นจึงดูเหมือนว่ามันใช้งานได้ มาตรฐานพูดถึงอะไรเกี่ยวกับเรื่องนี้? เป็นเรื่องถูกกฎหมายหรือไม่ที่จะ "จัดสรร" บล็อกหน่วยความจำที่ว่างเปล่าอยู่เสมอ?

7
อะไรคือความแตกต่างระหว่างการอ้างอิงที่อ่อนแอและการอ้างอิงที่ไม่มีเจ้าของ
สวิฟท์มี: การอ้างอิงที่แข็งแกร่ง ข้อมูลอ้างอิงที่อ่อนแอ การอ้างอิงที่ไม่เป็นเจ้าของ การอ้างอิงที่ไม่มีเจ้าของแตกต่างจากการอ้างอิงที่อ่อนแออย่างไร เมื่อใดจึงจะปลอดภัยที่จะใช้การอ้างอิงที่ไม่ได้เป็นเจ้าของ การอ้างอิงที่ไม่มีเจ้าของความเสี่ยงด้านความปลอดภัยเช่นตัวชี้ห้อยใน C / C ++?

10
อนุญาตให้ลบหรือไม่
มันอนุญาตให้delete this;หากคำสั่งลบเป็นคำสั่งสุดท้ายที่จะดำเนินการในอินสแตนซ์ของชั้นเรียนที่? แน่นอนฉันแน่ใจว่าวัตถุที่แสดงโดยthis-pointer นั้นnewถูกสร้างขึ้นอย่างสมบูรณ์ ฉันกำลังคิดเกี่ยวกับสิ่งนี้: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over to a new Module, eg: controller->setWorkingModule(new OtherModule()); // since the new "OtherModule" object will take the lead, // I want to get …

1
ความแตกต่างระหว่างไฟล์ไลบรารี. so, .la และ. a คืออะไร
ฉันรู้ว่า.soไฟล์เป็นไลบรารีแบบไดนามิก (หลายเธรดสามารถแชร์ไลบรารีดังกล่าวได้ดังนั้นจึงไม่จำเป็นต้องมีมากกว่าหนึ่งสำเนาในหน่วยความจำ) แต่อะไรคือความแตกต่างระหว่าง.aและ.la? ไลบรารีสแตติกเหล่านี้ทั้งหมดหรือไม่ หาก libs แบบไดนามิกมีข้อได้เปรียบใหญ่กว่าแบบคงที่ทำไมทำไมยังคงมีห้องสมุดแบบคงที่มากมาย? ฉันต้องการทราบกลไกพื้นฐานในการโหลดไลบรารี่ (ทั้งสองชนิด) และวิธีการเรียกใช้โค้ดใน lib เมื่อมันถูกนำไปใช้ที่ไหนสักแห่ง ฉันควรศึกษาส่วนใดของเคอร์เนล และฉันควรรู้คำสั่ง / ยูทิลิตี้ที่เกี่ยวข้องกับ Linux เพื่อที่จะรู้ว่ากระบวนการทำงานอย่างไร? (ตอนนี้ฉันรู้เพียงldคำสั่งเท่านั้น) เมื่อฉันควรพยายามที่จะสร้างรหัสลง.soหรือ.a? อันไหนดีกว่า? [mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l total 96 -rw-r--r-- 1 mirror mirror 22892 Sep 2 23:25 openvpn-plugin-auth-pam.a -rwxr-xr-x 1 mirror mirror 931 Sep 2 23:25 openvpn-plugin-auth-pam.la -rwxr-xr-x 1 mirror mirror …

5
@ เก็บรักษามอบหมายสำเนา nonatomic ใน Objective-C
ในฐานะที่เป็นคนใหม่สำหรับ Objective-C ใครบางคนสามารถให้ภาพรวมของการเก็บรักษามอบหมายคัดลอกและอื่น ๆ ที่ฉันหายไปซึ่งเป็นไปตามคำสั่ง @property หรือไม่ พวกเขากำลังทำอะไรและทำไมฉันจึงต้องการใช้งานมากกว่ากัน

7
ทำไม @autoreleasepool ยังต้องการ ARC อยู่
ส่วนใหญ่ด้วย ARC (การอ้างอิงโดยอัตโนมัติ) เราไม่จำเป็นต้องคิดถึงการจัดการหน่วยความจำเลยด้วย Objective-C ไม่อนุญาตให้สร้างNSAutoreleasePoolอีกต่อไปอย่างไรก็ตามมีไวยากรณ์ใหม่: @autoreleasepool { … } คำถามของฉันคือทำไมฉันจะต้องใช้สิ่งนี้เมื่อฉันไม่ควรปล่อย / ตอบรับอัตโนมัติด้วยตนเอง แก้ไข:เพื่อสรุปสิ่งที่ฉันได้จากคำตอบและความคิดเห็นทั้งหมด: ไวยากรณ์ใหม่: @autoreleasepool { … } เป็นไวยากรณ์ใหม่สำหรับ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; … [pool drain]; ที่สำคัญกว่า: ใช้ ARC เช่นเดียวกับautoreleaserelease มันต้องการพูลการปล่อยอัตโนมัติในสถานที่ ARC ไม่ได้สร้างกลุ่มการปล่อยอัตโนมัติให้คุณ อย่างไรก็ตาม: เธรดหลักของแอป Cocoa ทุกแอปมีพูลการเลิกอัตโนมัติอยู่แล้ว มีสองโอกาสที่คุณอาจต้องการใช้ประโยชน์จาก@autoreleasepool: myRunLoop(…) { @autoreleasepool { … } return success; }เมื่อคุณอยู่ในหัวข้อรองและไม่มีสระว่ายน้ำเปิดตัวรถยนต์คุณต้องทำด้วยตัวเองเพื่อป้องกันการรั่วไหลเช่น …

15
การตั้งค่าวัตถุเป็น Null / ไม่มีอะไรหลังจากใช้ใน. NET
คุณควรตั้งค่าวัตถุทั้งหมดเป็นnull( Nothingใน VB.NET) เมื่อคุณทำเสร็จแล้ว? ฉันเข้าใจว่าใน. NET มันเป็นสิ่งสำคัญในการกำจัดอินสแตนซ์ของวัตถุใด ๆ ที่ใช้IDisposableอินเทอร์เฟซเพื่อปล่อยทรัพยากรบางอย่างแม้ว่าวัตถุยังสามารถเป็นบางสิ่งหลังจากที่มันถูกกำจัด (ดังนั้นisDisposedคุณสมบัติในรูปแบบ) ดังนั้นฉันคิดว่ามัน ในหน่วยความจำหรืออย่างน้อยก็ในบางส่วน ฉันยังรู้ว่าเมื่อวัตถุออกนอกขอบเขตจะมีการทำเครื่องหมายสำหรับการรวบรวมพร้อมสำหรับการส่งผ่านครั้งถัดไปของตัวรวบรวมขยะ (แม้ว่าอาจใช้เวลา) ดังนั้นในใจนี้จะตั้งค่าเพื่อnullเพิ่มความเร็วของระบบปล่อยหน่วยความจำตามที่ไม่ต้องทำงานว่าจะไม่อยู่ในขอบเขตอีกต่อไปและพวกเขามีผลข้างเคียงที่ไม่ดี? บทความ MSDN ไม่เคยทำสิ่งนี้ในตัวอย่างและขณะนี้ฉันทำสิ่งนี้เพราะฉันไม่เห็นอันตราย อย่างไรก็ตามฉันได้พบกับความคิดเห็นที่หลากหลายดังนั้นความคิดเห็นใด ๆ ที่เป็นประโยชน์

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