<?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="sk">

    <info>
      <link type="guide" xref="index#faq"/>
    </info>
    <title>Čo znamená „heap“?</title>

    <section id="what-does-heap-mean">
      <title>Čo znamená „V súbore [heap]“?</title>

      <p>To znamená, že aplikácia sysprof predpokladá, že funkcia bola volaná z nejakej časti haldy programu (heap), kde sa alokuje pamäť pomocou <code>malloc</code>, a nie zo sekcie kódu (kde obyčajne žije vykonateľný kód). Existuje niekoľko možných vysvetlení.</p>
    </section>

    <section id="jit">
      <title>Kompilátory JIT (Just In Time)</title>

      <p>Jazyky ako Java môžu počas behu programu generovať vykonateľný kód a ukladať ho do haldy (heap). Aplikácia Sysprof v tomto prípade presne hlási situáciu.</p>
    </section>

    <section id="optimizing">
      <title>Optimalizujúce kompilátory</title>

      <p>Kompilátory pre jazyky C a C++ môžu optimalizovať a odstrániť informácie potrebné na určenie volateľa funkcie, čo vedie k chybnému označeniu ako [heap]. Stále môžete zistiť, ako často je každá funkcia volaná programom, ale nie vždy viete, z ktorej časti.</p>

      <note>
        <p>Pre kompilátor gcc príznak <code>-fno-omit-frame-pointer</code> zabráni tejto optimalizácii. Príznak nie je vždy potrebný, napríklad na strojoch x86_64 je potrebný len pri optimalizácii -O3.</p>
      </note>

      <note>
        <p>Ak chcete získať najpodrobnejší a najpresnejší strom volaní z neoptimalizovaného kódu, použite tieto príznaky: <code>-ggdb -fno-omit-frame-pointer -O0</code></p>
      </note>
    </section>
</page>
