<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="faq" xml:lang="kk">

    <info>
      <link type="guide" xref="index#faq"/>
    </info>
    <title>Heap дегеніміз не?</title>

    <section id="what-does-heap-mean">
      <title>"[heap] файлында" деген нені білдіреді?</title>

      <p>Бұл sysprof функция код бөлімінен (әдетте орындалатын код орналасатын жер) емес, бағдарламаның үйіндісінен (heap) (<code>malloc</code> жад бөлетін жер) шақырылды деп есептейтінін білдіреді. Бұған бірнеше ықтимал түсіндірме бар.</p>
    </section>

    <section id="jit">
      <title>JIT (Just in Time) компиляторлары</title>

      <p>Java сияқты тілдер бағдарлама орындалып жатқанда орындалатын кодты жасап, оны үйіндіде сақтай алады. Sysprof мұндай жағдайда жағдайды дәл көрсетеді.</p>
    </section>

    <section id="optimizing">
      <title>Оңтайландырушы компиляторлар</title>

      <p>C және C++ компиляторлары функцияның шақырушысын анықтау үшін қажетті ақпаратты оңтайландырып тастауы мүмкін, сондықтан ол [heap] ретінде қате танылады. Сіз әлі де бағдарлама тарапынан әр функцияның қаншалықты жиі шақырылатынын біле аласыз, бірақ оның қай жерден шақырылғаны әрдайым белгілі болмайды.</p>

      <note>
        <p>gcc үшін <code>-fno-omit-frame-pointer</code> жалаушасы бұл оңтайландыруды болдырмайды. Жалауша әрдайым қажет емес, мысалы, x86_64 машиналарында ол тек -O3 оңтайландыруымен бірге қажет.</p>
      </note>

      <note>
        <p>Оңтайландырылмаған кодтан ең егжей-тегжейлі және дәл шақырулар ағашын алу үшін мына жалаушаларды пайдаланыңыз: <code>-ggdb -fno-omit-frame-pointer -O0</code></p>
      </note>
    </section>
</page>
