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

    <info>
      <link type="guide" xref="index#faq"/>
    </info>
    <title>Шта значи гомила (heap)?</title>

    <section id="what-does-heap-mean">
      <title>Шта значи „У датотеци [гомила]“?</title>

      <p>Ово значи да Профилатор система верује да је функција позвана однекуд из гомиле програма (где <code>malloc</code> додељује меморију), а не из одељка кода (где извршни код обично борави). Постоји неколико могућих објашњења.</p>
    </section>

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

      <p>Језици попут Јаве могу да генеришу извршни код док је програм покренут и да га сместе у гомилу. Профилатор система у овом случају тачно извештава о ситуацији.</p>
    </section>

    <section id="optimizing">
      <title>Оптимизујући компајлери</title>

      <p>Ц и Ц++ компајлери могу оптимизацијом да уклоне податке потребне за одређивање позиваоца функције, па се он погрешно препознаје као [гомила]. И даље можете рећи колико често програм позива сваку функцију, али не увек и одакле.</p>

      <note>
        <p>За гцц, опција <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>
