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

    <info>
      <link type="guide" xref="index#faq"/>
    
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>scootergrisen</mal:name>
      <mal:email/>
      <mal:years>2020</mal:years>
    </mal:credit>
  </info>
    <title>Hvad betyder heap?</title>

    <section id="what-does-heap-mean">
      <title>Hvad betyder "In file [heap]"?</title>

      <p>Det betyder at sysprof mener, at en funktion blev kaldt fra et programs heap (hvor <code>malloc</code> allokerer hukommelse) frem for kodeafsnittet (hvor eksekverbar kode normalt findes). Der kan være flere forklaringer til det.</p>
    </section>

    <section id="jit">
      <title>JIT-kompilere (Just in Time)</title>

      <p>Sprog som Java kan generere eksekverbar kode, mens et program kører og gemme det i heapen. Sysprof rapporterer situationen, når det er tilfældet.</p>
    </section>

    <section id="optimizing">
      <title>Optimerende kompilere</title>

      <p>C- og C++-kompilere kan optimere information bort, som behøves til at bestemme en funktions kalder, så den forveksles for [heap]. Du kan stadigvæk se, hvor tit hver funktion kaldes af programmet, men ikke altid hvorfra.</p>

      <note>
        <p>I gcc forhindrer flaget <code>-fno-omit-frame-pointer</code> denne optimering. Flaget behøves ikke altid, f.eks. på x86_64-maskiner er det kun nødvendigt sammen med optimeringen -O3.</p>
      </note>

      <note>
        <p>Brug følgende flag for at få det mest detaljerede og præcise kaldtræ fra kode, som ikke er blevet optimeret: <code>-ggdb -fno-omit-frame-pointer -O0</code></p>
      </note>
    </section>
</page>
