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

ใช้แท็กนี้สำหรับการจัดการหน่วยความจำหรือปัญหาในการเขียนโปรแกรม สำหรับคำถามเกี่ยวกับปัญหาฮาร์ดแวร์หน่วยความจำหรือข้อผิดพลาดในซอฟต์แวร์ทั่วไปให้ไปที่ https://superuser.com หรือ https://serverfault.com หากเกี่ยวข้องกับฮาร์ดแวร์หรือซอฟต์แวร์ระดับองค์กร

1
อาร์เรย์ Java byte ขนาด 1 MB หรือมากกว่านั้นใช้ RAM เป็นสองเท่า
เล่นโค้ดด้านล่างบน Windows 10 / OpenJDK 11.0.4_x64 ผลิตเป็นผลผลิตและused: 197 expected usage: 200ซึ่งหมายความว่าอาร์เรย์ 200 ไบต์ของหนึ่งล้านองค์ประกอบใช้เวลาประมาณ RAM 200MB ทุกอย่างดี เมื่อฉันเปลี่ยนการจัดสรรอาร์เรย์ไบต์ในรหัสจากnew byte[1000000]ไปnew byte[1048576](นั่นคือ 1024 * 1024 องค์ประกอบ) จะผลิตเป็นผลผลิตและused: 417 expected usage: 200ห่า? import java.io.IOException; import java.util.ArrayList; public class Mem { private static Runtime rt = Runtime.getRuntime(); private static long free() { return rt.maxMemory() - …

1
การเริ่มต้นวัตถุใน Java“ Foo f = new Foo ()” เป็นหลักเหมือนกับการใช้ malloc สำหรับตัวชี้ใน C หรือไม่?
ฉันพยายามที่จะเข้าใจกระบวนการจริงของการสร้างวัตถุใน Java และฉันคิดว่าภาษาการเขียนโปรแกรมอื่น ๆ จะผิดไหมถ้าสมมติว่าการเริ่มต้นวัตถุใน Java นั้นเหมือนกับเมื่อคุณใช้ malloc สำหรับโครงสร้างใน C หรือไม่? ตัวอย่าง: Foo f = new Foo(10); typedef struct foo Foo; Foo *f = malloc(sizeof(Foo)); นี่คือสาเหตุที่วัตถุถูกกล่าวว่าอยู่บนกองมากกว่ากองซ้อนหรือไม่? เพราะพวกมันเป็นเพียงตัวชี้ไปยังข้อมูล?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.