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

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

27
กองและกองคืออะไรและอยู่ที่ไหน
หนังสือภาษาการเขียนโปรแกรมอธิบายว่าชนิดของค่าถูกสร้างขึ้นบนสแต็กและประเภทการอ้างอิงจะถูกสร้างขึ้นบนฮีปโดยไม่ต้องอธิบายว่าสองสิ่งนี้คืออะไร ฉันไม่ได้อ่านคำอธิบายที่ชัดเจนเกี่ยวกับเรื่องนี้ ฉันเข้าใจว่าสแต็คคืออะไร แต่, พวกเขาอยู่ที่ไหนและอะไร (ทางกายภาพในหน่วยความจำของคอมพิวเตอร์จริง)? มีการควบคุมโดยระบบปฏิบัติการหรือภาษาที่ใช้งานในระดับเท่าใด ขอบเขตของพวกเขาคืออะไร? อะไรเป็นตัวกำหนดขนาดของแต่ละคน อะไรทำให้เร็วขึ้น

18
เหตุใดโปรแกรมเมอร์ C ++ ควรลดการใช้ 'ใหม่' ให้น้อยที่สุด
ฉันสะดุดกับคำถามStack Overflow หน่วยความจำรั่วด้วย std :: string เมื่อใช้ std :: list <std :: string>และหนึ่งในความเห็นบอกว่า: หยุดใช้newมาก ฉันไม่เห็นเหตุผลที่คุณใช้ใหม่ทุกที่ที่คุณทำ คุณสามารถสร้างวัตถุตามมูลค่าในC ++และเป็นหนึ่งในข้อได้เปรียบอย่างมากสำหรับการใช้ภาษา คุณไม่ต้องจัดสรรทุกอย่างบนกอง หยุดคิดเหมือนโปรแกรมเมอร์Java ฉันไม่แน่ใจจริงๆว่าเขาหมายถึงอะไร เหตุใดจึงควรสร้างวัตถุตามค่าในC ++บ่อยที่สุดเท่าที่จะเป็นไปได้และวัตถุภายในนั้นแตกต่างกันอย่างไร ฉันตีความคำตอบผิดหรือไม่

23
ซึ่งเร็วกว่า: การจัดสรรสแต็กหรือการจัดสรรฮีป
คำถามนี้อาจฟังดูค่อนข้างธรรมดา แต่เป็นการอภิปรายที่ฉันมีกับผู้พัฒนารายอื่นที่ฉันทำงานด้วย ฉันกำลังดูแลการจัดสรรสิ่งต่าง ๆ ที่ฉันสามารถทำได้แทนที่จะกองพวกเขา เขากำลังพูดกับฉันและเฝ้าไหล่ของฉันและแสดงความคิดเห็นว่ามันไม่จำเป็นเพราะมันเป็นการแสดงที่ฉลาดเหมือนกัน ฉันอยู่ภายใต้การแสดงผลเสมอว่าการเติบโตของสแต็กนั้นเป็นเวลาที่คงที่และประสิทธิภาพของการจัดสรรฮีปขึ้นอยู่กับความซับซ้อนในปัจจุบันของฮีปสำหรับการจัดสรรทั้งสอง (การหารูขนาดที่เหมาะสม) และการจัดสรร (ยุบหลุมเพื่อลดการกระจายตัว การใช้งานไลบรารีมาตรฐานจำนวนมากต้องใช้เวลาในการทำสิ่งนี้ในระหว่างการลบหากฉันไม่ผิดพลาด) สิ่งนี้ทำให้ฉันเป็นสิ่งที่อาจต้องพึ่งพาผู้แปล สำหรับโครงการนี้โดยเฉพาะฉันใช้คอมไพเลอร์MetrowerksสำหรับสถาปัตยกรรมPPC ข้อมูลเชิงลึกเกี่ยวกับชุดค่าผสมนี้จะมีประโยชน์มากที่สุด แต่โดยทั่วไปสำหรับ GCC และ MSVC ++ กรณีนี้คืออะไร การจัดสรรฮีปไม่สูงเท่ากับประสิทธิภาพการจัดสรรสแต็กหรือไม่ ไม่มีความแตกต่าง? หรือความแตกต่างดังนั้นนาทีมันกลายเป็นไมโครเพิ่มประสิทธิภาพไม่มีจุดหมาย
503 c++  performance  memory  stack  heap 

17
การสร้าง heap จะเป็นความซับซ้อนของเวลา O (n) ได้อย่างไร
ใครช่วยอธิบายได้ว่าการสร้างกองเป็นความซับซ้อน O (n) ได้อย่างไร การแทรกรายการลงในกองคือO(log n)และแทรกซ้ำแล้วซ้ำอีก n / 2 ครั้ง (ส่วนที่เหลือเป็นใบไม้และไม่สามารถละเมิดคุณสมบัติกองได้) ดังนั้นนี่หมายถึงความซับซ้อนที่O(n log n)ฉันควรจะคิด กล่าวอีกนัยหนึ่งสำหรับแต่ละรายการที่เรา "heapify" มีความเป็นไปได้ที่จะกรองลงหนึ่งครั้งสำหรับแต่ละระดับสำหรับ heap จนถึงตอนนี้ (ซึ่งเป็นระดับ log n) ฉันพลาดอะไรไป

10
ขนาดฮีพ Java สูงสุดเริ่มต้นถูกกำหนดอย่างไร?
หากฉันไม่ใช้-Xmxnตัวเลือกจากบรรทัดคำสั่ง Java จะมีการใช้ค่าเริ่มต้น ตามเอกสาร Java "ค่าเริ่มต้นถูกเลือกที่รันไทม์ตามการกำหนดค่าระบบ" การตั้งค่าการกำหนดค่าระบบใดที่ส่งผลต่อค่าเริ่มต้น
420 java  heap  heap-memory 

26
ไม่สามารถจองพื้นที่เพียงพอสำหรับกองวัตถุ
ฉันได้รับข้อยกเว้นต่อไปนี้ซ้ำ ๆ ทุกครั้งที่ฉันพยายามเรียกใช้โปรแกรม เกิดข้อผิดพลาดระหว่างการเริ่มต้นของ VM ไม่สามารถจองพื้นที่เพียงพอสำหรับกองวัตถุ ไม่สามารถสร้างเครื่องเสมือน Java ฉันพยายามเพิ่มหน่วยความจำเสมือน (ขนาดหน้า) และขนาด RAM แต่ก็ไม่มีประโยชน์ ฉันจะกำจัดข้อผิดพลาดนี้ได้อย่างไร
277 java  jvm  heap 

7
ฉันจะวิเคราะห์ไฟล์. hprof ได้อย่างไร
ฉันมีเซิร์ฟเวอร์ที่ใช้งานจริงที่ใช้แฟล็กต่อไปนี้: - XX: + HeapDumpOnOutOfMemoryError เมื่อคืนมันสร้างไฟล์ java-38942.hprof เมื่อเซิร์ฟเวอร์ของเราพบข้อผิดพลาดของฮีป ปรากฎว่าผู้พัฒนาระบบรู้ถึงการตั้งค่าสถานะ แต่ไม่มีทางที่จะได้รับข้อมูลที่เป็นประโยชน์ใด ๆ จากมัน ความคิดใด ๆ
227 java  profiling  heap 


8
ค้นหาค่ามัธยฐานที่ใช้งานอยู่จากกระแสของจำนวนเต็ม
ซ้ำเป็นไปได้: อัลกอริทึมค่ามัธยฐานกลิ้งใน C ระบุว่าจำนวนเต็มอ่านจาก data stream ค้นหาค่ามัธยฐานขององค์ประกอบที่อ่านได้อย่างมีประสิทธิภาพ วิธีแก้ปัญหาที่ฉันได้อ่าน: เราสามารถใช้สูงสุดกองด้านซ้ายเพื่อเป็นตัวแทนองค์ประกอบที่น้อยกว่าค่ามัธยฐานที่มีประสิทธิภาพและกองต่ำสุดทางด้านขวาเพื่อเป็นตัวแทนองค์ประกอบที่มากกว่าค่ามัธยฐานที่มีประสิทธิภาพ หลังจากประมวลผลองค์ประกอบที่เข้ามาจำนวนขององค์ประกอบในกองแตกต่างกันมากที่สุด 1 องค์ประกอบ เมื่อทั้งสองฮีปมีจำนวนองค์ประกอบเท่ากันเราจะพบว่าค่าเฉลี่ยของข้อมูลรูทของฮีปนั้นเป็นค่ามัธยฐานที่มีประสิทธิภาพ เมื่อฮีปไม่สมดุลเราจะเลือกค่ามัธยฐานที่มีประสิทธิภาพจากรูทฮีปที่มีองค์ประกอบมากกว่า แต่เราจะสร้าง heap สูงสุดและ heap สูงสุดได้อย่างไรเราจะรู้ค่ามัธยฐานที่มีประสิทธิภาพได้อย่างไร ฉันคิดว่าเราจะแทรก 1 องค์ประกอบใน max-heap แล้วองค์ประกอบ 1 ถัดไปใน min-heap และอื่น ๆ สำหรับองค์ประกอบทั้งหมด ถูกต้องฉันถ้าฉันผิดที่นี่
223 algorithm  heap  median 

14
คิวลำดับความสำคัญใน. สุทธิ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังมองหา. NET การใช้งานคิวลำดับความสำคัญหรือโครงสร้างข้อมูลกอง คิวลำดับความสำคัญคือโครงสร้างข้อมูลที่ให้ความยืดหยุ่นมากกว่าการเรียงลำดับแบบง่าย ๆ เนื่องจากอนุญาตให้องค์ประกอบใหม่เข้าสู่ระบบตามช่วงเวลาที่กำหนด มันคุ้มค่ากว่าการแทรกงานใหม่ลงในคิวลำดับความสำคัญมากกว่าจัดเรียงทุกอย่างในการมาถึงแต่ละครั้ง คิวลำดับความสำคัญพื้นฐานรองรับการดำเนินงานหลักสามประการ: แทรก (Q, x) ระบุไอเท็ม x ด้วยคีย์ k ให้แทรกลงในคิวลำดับความสำคัญ Q ค้นหาขั้นต่ำ (Q) ส่งกลับตัวชี้ไปยังรายการที่มีค่าคีย์น้อยกว่าคีย์อื่นในคิวลำดับความสำคัญ Q ลบ-ขั้นต่ำ (Q) ลบรายการออกจากคิวลำดับความสำคัญ Q ซึ่งมีคีย์น้อยที่สุด นอกจากว่าฉันกำลังมองหาสถานที่ที่ไม่ถูกต้องไม่มีใครอยู่ในกรอบ มีใครตระหนักถึงสิ่งที่ดีหรือฉันควรจะม้วนตัวเอง?

12
การกระจายตัวของหน่วยความจำคืออะไร?
ฉันได้ยินคำว่า "การกระจายตัวของหน่วยความจำ" ใช้สองสามครั้งในบริบทของการจัดสรรหน่วยความจำแบบไดนามิก C ++ ฉันพบคำถามบางอย่างเกี่ยวกับวิธีจัดการกับการแตกแฟรกเมนต์ของหน่วยความจำ แต่ไม่พบคำถามโดยตรงที่เกี่ยวข้องกับมัน ดังนั้น: การกระจายตัวของหน่วยความจำคืออะไร? ฉันจะทราบได้อย่างไรว่าการกระจายตัวของหน่วยความจำเป็นปัญหาสำหรับแอปพลิเคชันของฉันหรือไม่ รายการประเภทใดที่มีโอกาสประสบมากที่สุด วิธีทั่วไปที่ดีในการจัดการกับการแตกแฟรกเมนต์คืออะไร นอกจากนี้: ฉันได้ยินมาว่าการจัดสรรแบบไดนามิกมากสามารถเพิ่มการกระจายตัวของหน่วยความจำ มันเป็นเรื่องจริงเหรอ? ในบริบทของ C ++ ฉันเข้าใจทุกคอนเทนเนอร์มาตรฐาน (std :: string, std :: vector ฯลฯ ) ใช้การจัดสรรหน่วยความจำแบบไดนามิก หากสิ่งเหล่านี้ถูกใช้ตลอดโปรแกรม (โดยเฉพาะ std :: string) การกระจายตัวของหน่วยความจำมีแนวโน้มที่จะเป็นปัญหาหรือไม่? การแตกแฟรกเมนต์หน่วยความจำจะถูกจัดการได้อย่างไรในแอปพลิเคชัน STL-heavy

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

17
เครื่องมือบรรทัดคำสั่งเพื่อค้นหา Java Heap Size และหน่วยความจำที่ใช้ (Linux)?
มีเครื่องมือบรรทัดคำสั่ง (Linux) เพื่อตรวจสอบขนาดฮีป (และหน่วยความจำที่ใช้) ของ Java Application หรือไม่? ฉันลองผ่าน jmap แต่มันให้ข้อมูล เกี่ยวกับพื้นที่หน่วยความจำภายในเช่น Eden / PermGen เป็นต้นซึ่งไม่มีประโยชน์สำหรับฉัน ฉันกำลังมองหาบางสิ่งที่ชอบ: หน่วยความจำสูงสุด: 1GB หน่วยความจำขั้นต่ำ: 256 MB หน่วยความจำฮีป: 700 MB หน่วยความจำที่ใช้แล้ว: 460 MB นั่นคือทั้งหมดที่ ฉันรู้ว่าฉันเห็นสิ่งนี้ใน JConsole ฯลฯ แต่ฉันต้องการเครื่องมือบรรทัดคำสั่ง (ไม่สามารถเปิดใช้งาน JMX ฯลฯ ) คุณรู้จักเครื่องมือ / คำสั่งดังกล่าวหรือไม่?
171 java  linux  performance  memory  heap 

9
เหตุใดแนวคิดทั้งสองแตกต่างกันจึงเรียกว่า "ฮีป"
เหตุใดฮีปแบบรันไทม์จึงใช้สำหรับการจัดสรรหน่วยความจำแบบไดนามิกในภาษา C และโครงสร้างข้อมูลซึ่งทั้งสองเรียกว่า "ฮีป" มีความสัมพันธ์บ้างไหม?

8
Heap vs Binary Search Tree (BST)
ฮีปและ BST แตกต่างกันอย่างไร เมื่อใดจึงควรใช้ฮีปและเมื่อใช้ BST ถ้าคุณต้องการที่จะได้รับองค์ประกอบในการเรียงลำดับ BST จะดีกว่ากอง?

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