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

    <info>
      <link type="guide" xref="index#faq"/>
    
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Rafael Fontenelle</mal:name>
      <mal:email>rafaelff@gnome.org</mal:email>
      <mal:years>2016-2018</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Leônidas Araújo</mal:name>
      <mal:email>leorusvellt@hotmail.com</mal:email>
      <mal:years>2022-2024</mal:years>
    </mal:credit>
  </info>
    <title>O que heap significa?</title>

    <section id="what-does-heap-mean">
      <title>O que “In file [heap]” significa?</title>

      <p>Isso significa que o sysprof acredita que uma função foi chamada de algum lugar na heap do programa (onde <code>malloc</code> aloca memória) em vez da seção de código (onde o código executável normalmente vive). Há várias possível explicações.</p>
    </section>

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

      <p>Linguagens como o Java podem gerar código executável enquanto um programa está em execução e armazena-o na heap. Sysprof está relatando com precisão a situação neste caso.</p>
    </section>

    <section id="optimizing">
      <title>Otimizando compiladores</title>

      <p>Compiladores C e C++ podem otimizar as informações necessárias para determinar o chamador de uma função, então isso é confundido com [heap]. Você ainda podem dizer quão frequente cada função é chamada pelo programa, mas nem sempre de onde.</p>

      <note>
        <p>Para o gcc, a sinalização <code>-fno-omit-frame-pointer</code> vai evitar essa otimização. A sinalização nem sempre é necessária, por exemplo em máquinas x86_64 só é necessário com a otimização -O3.</p>
      </note>

      <note>
        <p>Para obter a árvore de chamadas mais detalhada e precisa a partir de código não otimizado, use essas sinalizações: <code>-ggdb -fno-omit-frame-pointer -O0</code></p>
      </note>
    </section>
</page>
