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

หน่วยความจำรั่วเกิดขึ้นเมื่อโปรแกรมล้มเหลวในการปล่อยหน่วยความจำที่ได้จัดสรรไว้ แต่ไม่ได้ใช้งานอีกต่อไปและไม่สามารถกู้คืนได้

4
การใช้พารามิเตอร์ HeapDumpOnOutOfMemoryError สำหรับดัมพ์ฮีพสำหรับ JBoss
ฉันบอกว่าฉันสามารถเพิ่ม-XX:+HeapDumpOnOutOfMemoryErrorพารามิเตอร์ในตัวเลือกการเริ่มต้น JVM ของฉันไปที่สคริปต์เริ่มต้น JBoss ของฉันเพื่อรับการถ่ายโอนข้อมูลฮีปเมื่อเราได้รับข้อผิดพลาดหน่วยความจำไม่เพียงพอในแอปพลิเคชันของเรา ฉันสงสัยว่าข้อมูลนี้ถูกทิ้งที่ไหน มันเป็นเพียงคอนโซลหรือไฟล์บันทึกบางอย่าง? หากเป็นเพียงคอนโซลจะเกิดอะไรขึ้นถ้าฉันไม่ได้ลงชื่อเข้าใช้เซิร์ฟเวอร์ Unix ผ่านคอนโซล
182 java  jboss  memory-leaks  heap 

19
จะค้นหาหน่วยความจำรั่วในรหัส C ++ ได้อย่างไร
ฉันเป็นโปรแกรมเมอร์ C ++ บนแพลตฟอร์ม Windows ฉันใช้ Visual Studio 2008 ฉันมักจะจบลงในรหัสด้วยหน่วยความจำรั่ว โดยปกติฉันพบว่าหน่วยความจำรั่วโดยตรวจสอบรหัส แต่มันยุ่งยากและไม่ได้เป็นวิธีที่ดีเสมอไป เนื่องจากฉันไม่สามารถจ่ายเครื่องมือตรวจจับการรั่วไหลของหน่วยความจำแบบจ่ายเงินได้ฉันต้องการให้พวกคุณแนะนำวิธีที่ดีที่สุดในการหลีกเลี่ยงการรั่วไหลของหน่วยความจำ ฉันต้องการทราบว่าโปรแกรมเมอร์สามารถค้นหาหน่วยความจำรั่วได้อย่างไร มีมาตรฐานหรือขั้นตอนใดที่ควรปฏิบัติตามเพื่อให้แน่ใจว่าไม่มีการรั่วไหลของหน่วยความจำในโปรแกรมหรือไม่?
180 c++  memory-leaks 

9
หน่วยความจำหลามรั่ว [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ ฉันมีสคริปต์ที่ใช้เวลานานซึ่งหากปล่อยให้ทำงานนานพอจะใช้หน่วยความจำทั้งหมดในระบบของฉัน ฉันไม่มีคำถามสองข้อ: มี "วิธีปฏิบัติที่ดีที่สุด" ที่จะปฏิบัติตามซึ่งจะช่วยป้องกันการรั่วไหลที่เกิดขึ้น? มีเทคนิคอะไรบ้างในการดีบักการรั่วไหลของหน่วยความจำใน Python

15
กายวิภาคของ“ ความจำรั่ว”
ใน. NET เปอร์สเปคทีฟ: คืออะไรหน่วยความจำรั่ว ? คุณจะทราบได้อย่างไรว่าแอปพลิเคชันของคุณรั่วหรือไม่? เอฟเฟกต์คืออะไร? คุณจะป้องกันการรั่วไหลของหน่วยความจำได้อย่างไร? หากแอปพลิเคชันของคุณมีหน่วยความจำรั่วก็จะหายไปเมื่อกระบวนการออกหรือถูกฆ่า? หรือการรั่วไหลของหน่วยความจำในแอปพลิเคชันของคุณส่งผลกระทบต่อกระบวนการอื่น ๆ ในระบบแม้หลังจากเสร็จสิ้นกระบวนการ และรหัสที่ไม่มีการจัดการที่เข้าถึงได้ผ่าน COM Interop และ / หรือ P / Invoke

8
การค้นหาหน่วยความจำ JavaScript รั่วไหลด้วย Chrome
ฉันได้สร้างกรณีทดสอบง่ายๆที่สร้างมุมมอง Backbone แนบตัวจัดการกับเหตุการณ์และสร้างคลาสที่ผู้ใช้กำหนดเอง ฉันเชื่อว่าด้วยการคลิกปุ่ม "ลบ" ในตัวอย่างนี้ทุกอย่างจะถูกล้างและไม่ควรมีหน่วยความจำรั่ว jsfiddle สำหรับโค้ดอยู่ที่นี่: http://jsfiddle.net/4QhR2/ // scope everything to a function function main() { function MyWrapper() { this.element = null; } MyWrapper.prototype.set = function(elem) { this.element = elem; } MyWrapper.prototype.get = function() { return this.element; } var MyView = Backbone.View.extend({ tagName : "div", id : "view", …

13
java.lang.OutOfMemoryError: ขนาดบิตแมปเกินงบประมาณ VM - Android
ฉันพัฒนาแอพพลิเคชั่นที่ใช้รูปภาพจำนวนมากบน Android แอปพลิเควิ่งครั้งเดียวเติมข้อมูลบนหน้าจอ ( Layouts, Listviews, Textviews, ImageViewsฯลฯ ) และผู้ใช้อ่านข้อมูล ไม่มีภาพเคลื่อนไหวไม่มีเอฟเฟกต์พิเศษหรืออะไรก็ตามที่สามารถเติมหน่วยความจำได้ บางครั้ง drawables สามารถเปลี่ยนได้ บางแหล่งข้อมูลเป็น Android และบางส่วนเป็นไฟล์ที่บันทึกในโฟลเดอร์ใน SDCARD จากนั้นผู้ใช้จะออก ( onDestroyวิธีการดำเนินการและแอพยังคงอยู่ในหน่วยความจำโดย VM) จากนั้นในบางครั้งผู้ใช้จะเข้าสู่อีกครั้ง ทุกครั้งที่ผู้ใช้ป้อนไปยังแอปที่ฉันสามารถดูหน่วยความจำที่เติบโตมากขึ้นเรื่อย ๆ java.lang.OutOfMemoryErrorจนกว่าผู้ใช้จะได้รับ ดังนั้นวิธีที่ดีที่สุด / ถูกต้องในการจัดการภาพจำนวนมากคืออะไร? ฉันควรใส่วิธีคงที่เพื่อไม่ให้โหลดตลอดเวลาหรือไม่ ฉันต้องทำความสะอาดเลย์เอาต์หรือรูปภาพที่ใช้ในเลย์เอาต์ด้วยวิธีพิเศษหรือไม่?

4
เหตุใดและวิธีการหลีกเลี่ยงการรั่วไหลของหน่วยความจำตัวจัดการเหตุการณ์?
ฉันเพิ่งรู้เมื่ออ่านคำถามและคำตอบใน StackOverflow ว่าการเพิ่มตัวจัดการเหตุการณ์ที่ใช้+=ใน C # (หรือฉันเดาภาษา. net อื่น ๆ ) อาจทำให้หน่วยความจำรั่วทั่วไป ... ฉันเคยใช้ตัวจัดการเหตุการณ์เช่นนี้มาหลายครั้งแล้วและไม่เคยรู้เลยว่าพวกเขาสามารถทำให้เกิดหรือทำให้หน่วยความจำรั่วในแอปพลิเคชันของฉัน ทำงานอย่างไร (หมายถึงเหตุใดจึงทำให้หน่วยความจำรั่ว) ฉันจะแก้ไขปัญหานี้ได้อย่างไร ใช้-=ตัวจัดการเหตุการณ์เดียวกันเพียงพอหรือไม่ มีรูปแบบการออกแบบทั่วไปหรือแนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการสถานการณ์เช่นนี้หรือไม่? ตัวอย่าง: ฉันควรจัดการแอปพลิเคชันที่มีหลายเธรดต่างกันอย่างไรโดยใช้ตัวจัดการเหตุการณ์ต่าง ๆ เพื่อเพิ่มหลายเหตุการณ์บน UI มีวิธีที่ดีและเรียบง่ายในการตรวจสอบนี้อย่างมีประสิทธิภาพในแอปพลิเคชันขนาดใหญ่ที่สร้างขึ้นแล้วหรือไม่?

7
เครื่องมือและวิธีการใดของ Android ที่ทำงานได้ดีที่สุดในการค้นหาการรั่วไหลของหน่วยความจำ / ทรัพยากร [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันได้พัฒนาแอพ Android และฉันเป็นจุดพัฒนาแอปโทรศัพท์ที่ทุกอย่างทำงานได้ดีและคุณต้องการประกาศชัยชนะและส่ง แต่คุณรู้ว่าต้องมีหน่วยความจำและทรัพยากรรั่วไหล ในนั้น; และมีเพียง 16mb จำนวนมากบน Android และเห็นได้ชัดว่ามันง่ายที่จะรั่วไหลในแอพ Android ฉันได้ดูไปรอบ ๆ และจนถึงตอนนี้สามารถขุดข้อมูลใน 'hprof' และ 'traceview' เท่านั้นและไม่ได้รับรีวิวที่น่าพอใจมากมาย คุณมีเครื่องมือหรือวิธีการใดบ้างที่พบหรือพัฒนาและสนใจที่จะแบ่งปันในโครงการระบบปฏิบัติการ

15
กลยุทธ์และเครื่องมือใดที่มีประโยชน์สำหรับการค้นหาหน่วยความจำรั่วใน. NET
ฉันเขียน C ++ เป็นเวลา 10 ปี ฉันพบปัญหาหน่วยความจำ แต่สามารถแก้ไขได้ด้วยความพยายามพอสมควร ในช่วงสองสามปีที่ผ่านมาฉันได้เขียน C # ฉันพบว่าฉันยังได้รับปัญหาหน่วยความจำมากมาย พวกมันยากที่จะวินิจฉัยและแก้ไขเนื่องจากความไม่แน่นอนและเนื่องจากปรัชญา C # คือคุณไม่ควรกังวลเกี่ยวกับสิ่งต่าง ๆ เมื่อคุณทำอย่างแน่นอน ปัญหาหนึ่งที่ฉันพบคือฉันต้องกำจัดและล้างข้อมูลทุกอย่างในโค้ดอย่างชัดเจน ถ้าฉันไม่ทำเช่นนั้นหน่วยความจำโปรไฟล์ก็ไม่ได้ช่วยอะไรเพราะมีแกลบที่ลอยอยู่มากมายเกี่ยวกับคุณไม่สามารถหารอยรั่วภายในข้อมูลทั้งหมดที่พวกเขากำลังพยายามแสดงให้คุณเห็น ฉันสงสัยว่าฉันมีความคิดที่ผิดหรือว่าเครื่องมือที่ฉันมีไม่ใช่สิ่งที่ดีที่สุด กลยุทธ์และเครื่องมือชนิดใดที่มีประโยชน์สำหรับการแก้ไขปัญหาการรั่วไหลของหน่วยความจำใน. NET

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; …

11
วิธีค้นหา Java Memory Leak
คุณจะพบหน่วยความจำรั่วใน Java ได้อย่างไร (โดยใช้ตัวอย่างเช่น JHat) ฉันพยายามโหลด heap dump ใน JHat เพื่อดูพื้นฐาน อย่างไรก็ตามฉันไม่เข้าใจว่าฉันควรจะสามารถค้นหาการอ้างอิงราก ( ref ) หรืออะไรก็ตามที่ถูกเรียก โดยทั่วไปฉันสามารถบอกได้ว่ามีรายการตารางแฮชหลายร้อยเมกะไบต์ ([java.util.HashMap $ Entry หรืออะไรทำนองนั้น) แต่มีการใช้แผนที่ทั่วสถานที่ ... มีวิธีการค้นหาแผนที่ขนาดใหญ่ไหม หรืออาจจะหารากทั่วไปของต้นไม้วัตถุขนาดใหญ่? [แก้ไข] ตกลงฉันอ่านคำตอบแล้ว แต่สมมุติว่าฉันเป็นไอ้เลวราคาถูก (หมายถึงฉันสนใจเรียนรู้วิธีใช้ JHat มากกว่าจ่ายให้ JProfiler) นอกจากนี้ JHat ยังมีอยู่เสมอเพราะเป็นส่วนหนึ่งของ JDK เว้นแต่จะไม่มีหนทางใดที่ JHat จะบังคับ แต่ไร้เดียงสา แต่ฉันไม่อยากจะเชื่อเลยว่าเป็นเช่นนั้น นอกจากนี้ฉันไม่คิดว่าฉันจะสามารถแก้ไขได้จริง (เพิ่มการบันทึกทุกขนาดแผนที่) และเรียกใช้มันนานพอที่ฉันจะสังเกตเห็นการรั่วไหล

2
นี่เป็นข้อบกพร่องของคอมไพเลอร์ C # หรือไม่?
ฉันกำลังตอบคำถามเกี่ยวกับความเป็นไปได้ของการปิด (อย่างถูกกฎหมาย) การยืดอายุการใช้งานของวัตถุเมื่อฉันพบโค้ดโคเจนที่แปลกประหลาดมากในส่วนของคอมไพเลอร์ C # (4.0 ถ้าสำคัญ) repro ที่สั้นที่สุดที่ฉันสามารถค้นหาได้มีดังต่อไปนี้: สร้างแลมบ์ดาที่จับภาพท้องถิ่นในขณะที่เรียกใช้ วิธีการคงที่ของประเภทที่มี กำหนดผู้รับมอบสิทธิ์อ้างอิงสร้างฟิลด์อินสแตนซ์ของวัตถุที่ประกอบด้วย ผลลัพธ์: คอมไพเลอร์สร้างการปิดวัตถุที่อ้างอิงวัตถุที่สร้างแลมบ์ดาเมื่อไม่มีเหตุผล - เป้าหมาย 'ภายใน' ของผู้รับมอบสิทธิ์เป็นวิธีการคงที่และสมาชิกอินสแตนซ์ของแลมบ์ด้าการสร้างวัตถุไม่จำเป็น ถูก (และไม่) แตะเมื่อผู้รับมอบสิทธิ์ถูกดำเนินการ คอมไพเลอร์ทำหน้าที่เหมือนโปรแกรมเมอร์ที่จับได้thisโดยไม่มีเหตุผล class Foo { private Action _field; public void InstanceMethod() { var capturedVariable = Math.Pow(42, 1); _field = () => StaticMethod(capturedVariable); } private static void StaticMethod(double arg) { } …

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

9
เหตุใดการใช้ 'ใหม่' จึงทำให้หน่วยความจำรั่ว?
ฉันเรียนรู้ C # ก่อนและตอนนี้ฉันเริ่มต้นด้วย C ++ ตามที่ฉันเข้าใจโอเปอเรเตอร์newใน C ++ ไม่เหมือนกับตัวดำเนินการใน C # คุณสามารถอธิบายสาเหตุของการรั่วไหลของหน่วยความจำในโค้ดตัวอย่างนี้ได้หรือไม่? class A { ... }; struct B { ... }; A *object1 = new A(); B object2 = *(new B());

29
คุณตรวจจับ / หลีกเลี่ยงการรั่วไหลของหน่วยความจำในรหัส (ไม่มีการจัดการ) ของคุณได้อย่างไร? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในโค้ด C / C ++ ที่ไม่มีการจัดการแนวทางปฏิบัติที่ดีที่สุดในการตรวจจับการรั่วไหลของหน่วยความจำคืออะไร? และแนวทางการเข้ารหัสเพื่อหลีกเลี่ยง? (ราวกับว่ามันง่ายมาก) เราเคยใช้วิธีโง่ ๆ ในอดีต: มีการเพิ่มตัวนับสำหรับการเรียกจัดสรรหน่วยความจำทุกครั้งและลดลงในขณะที่ว่าง ในตอนท้ายของโปรแกรมค่าตัวนับควรเป็นศูนย์ ฉันรู้ว่านี่ไม่ใช่วิธีที่ดีและมีการจับไม่กี่ครั้ง (ตัวอย่างเช่นหากคุณกำลังเพิ่มหน่วยความจำที่จัดสรรโดยการเรียก API ของแพลตฟอร์มจำนวนการจัดสรรของคุณจะไม่ตรงกับจำนวนการว่างของคุณแน่นอนจากนั้นเราจะเพิ่มตัวนับเมื่อเรียกการเรียก API ที่จัดสรรหน่วยความจำ) ฉันคาดหวังว่าประสบการณ์คำแนะนำของคุณและอาจมีการอ้างอิงถึงเครื่องมือที่ทำให้สิ่งนี้ง่ายขึ้น
125 c++  c  memory-leaks 

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