Sobes.tech
Junior

Ի՞նչ է heap-ը և stack-ը։

sobes.tech AI

Պատասխան AI-ից

Heap և Stack երկուսը հիշողության տարածքներ են, որոնք ծրագրերը օգտագործում են տվյալների պահեստավորման համար:

  • Stack (ստակ) — սա հիշողության տարածք է, որտեղ պահվում են տեղական փոփոխականները, ֆունկցիաների պարամետրերը և վերադարձի հասցեները: Այն աշխատում է LIFO (վերջին մտավ՝ առաջին դուրս) սկզբունքով: Երբ կանչվում է ֆունկցիա, նրա համար հատկացվում է բլոկ ստակում, և ավարտից հետո այն ազատվում է: Ստակն ունի սահմանափակ չափս և ավտոմատ կառավարվում է:

  • Heap (հավաք) — սա հիշողության տարածք է, որտեղ կատարվում է օբյեկտների և տվյալների դինամիկ հատկացում, որոնց չափը կարող է փոխվել ծրագրի գործարկման ժամանակ: Java-ում օբյեկտները ստեղծվում են հավաքում, և գարշապարը ավտոմատ կերպով ազատում է օգտագործված չլինող հիշողությունը:

Օրինակ՝

public void օրինակ() {
    int a = 10; // պահվում է ստակում
    String s = new String("Բարև"); // String օբյեկտը ստեղծվում է հավաքում
}

Այստեղ a — տեղական փոփոխական է ստակում, իսկ String օբյեկտը — հավաքում։