out-of-memory-build-nsjfinancas

star 0

Orquestra o tratamento de "out of memory" no build do `nsjFinancas` (erro `F2046` do `dcc32`), do diagnostico ao alivio: limpeza de `uses`/units redundantes, separacao de modulo em package e re-build validado por log. Use quando o build, `nsbuild nsjfinancas` ou `dcc32` falhar por estouro de memoria, quando o projeto estiver pesado demais para compilar, ou quando aparecer `F2046`/`Out of memory`/`Out of resources`; nao use para `F2613` (unit nao encontrada) nem para falta real de RAM do SO sem relacao com o compilador.

Ruan-Sampaio By Ruan-Sampaio schedule Updated 6/5/2026

name: out-of-memory-build-nsjfinancas description: Orquestra o tratamento de "out of memory" no build do nsjFinancas (erro F2046 do dcc32), do diagnostico ao alivio: limpeza de uses/units redundantes, separacao de modulo em package e re-build validado por log. Use quando o build, nsbuild nsjfinancas ou dcc32 falhar por estouro de memoria, quando o projeto estiver pesado demais para compilar, ou quando aparecer F2046/Out of memory/Out of resources; nao use para F2613 (unit nao encontrada) nem para falta real de RAM do SO sem relacao com o compilador.

Out Of Memory no Build do nsjFinancas

Executar este fluxo quando o build do nsjFinancas falhar por estouro de memoria do compilador (F2046), tipicamente porque o projeto cresceu demais e o dcc32 (Win32) atinge o limite de memoria do processo.

Esta skill roteia e sequencia outras skills; nao duplica a tecnica de cada etapa. A correcao real fica nas skills especializadas referenciadas abaixo.

Pre-requisito de diagnostico

Antes de agir, confirmar que o sintoma e mesmo F2046 do compilador:

  • F2046 Out of memory (ou Out of resources) no log de build / IDE -> e este fluxo.
  • F2613 Unit '<...>' not found -> NAO e este fluxo; usar diagnostico-f2613-package.
  • Falha de RAM do SO fora do dcc32 (maquina sem memoria, outro processo) -> tratar ambiente, fora do escopo desta skill.
  • Tratar F2046 como limite de memoria do dcc32, nao apenas falta de RAM da maquina.

Ordem de combinacao de skills

  1. delphi-legado-guardrails (stack)
  2. nsjfinancas-refactor-guardrails (arquitetura/refactor)
  3. esta skill (roteamento por sintoma)
  4. skill de execucao da etapa atual (limpeza, package ou build)

Fluxo

  1. Diagnostico — confirmar F2046 pelo log (build\logs\nsjfinancas.log) ou pela unit alvo apontada na IDE. Registrar a unit onde o compilador estourou, quando houver.
  2. Alivio rapido (baixo risco, primeiro) — reduzir a carga do compilador sem mover codigo:
    • Aplicar a mitigacao de F2046 de nsjfinancas-refactor-guardrails: limpar uses de units de alto fan-out (browser base, controller base, dao base) e mover o que nao for exigido por assinatura publica/heranca/tipo de campo de interface uses para implementation uses.
    • Auditar e remover units candidatas a redundantes com verificar-units-redundantes, cruzando nsjFinancas.dpr, nsjFinancas.dproj e build/xmls/nsjfinancas.nsproj.xml.
    • Re-build a cada lote pequeno (ver etapa 4). Se isso ja resolver, parar aqui.
  3. Alivio estrutural (quando a limpeza nao basta) — tirar peso do projeto principal movendo modulo para package:
    • Definir a fronteira do modulo funcional completo com registrar-limpeza-modulos.
    • Executar a migracao uma unit por vez, com build e rollback por etapa, usando migrar-units-package-incremental.
    • Se o modulo alvo for bordero, preferir migrar-bordero-package.
    • Validar sempre o trio nsproj.xml + nsjFinancas.dpr + nsjFinancas.dproj (dependencia registrada, units legadas removidas do dpr, DCCReference removidos do dproj).
  4. Build validado — com build-erp-workspace:
    • Quando houver package em jogo, rodar build isolado do package antes do build amplo do nsjFinancas.
    • Alvo padrao do repo erp-financas-servicos: nsbuild nsjfinancas.
    • Nao usar clean por padrao; so com pedido explicito do usuario no mesmo turno.
    • Confirmar resultado sempre pelo log do alvo (build\logs\nsjfinancas.log), nao so pelo retorno do script.

Regras de decisao

  • Ir do alivio mais barato e reversivel (limpar uses) para o mais estrutural (package), nunca o inverso.
  • Aplicar alteracoes em lote pequeno e rodar build completo a cada lote viavel; um lote grande esconde qual mudanca reduziu (ou nao) a memoria.
  • Se a remocao de uma unit fizer surgir F2613, sair para diagnostico-f2613-package e so depois retomar este fluxo.
  • Nao remover unit apenas porque pertence a dependencia no nsproj; tratar como candidata ate o build validar.
  • DCC_UnitSearchPath muito longo tambem estoura limite do dcc; preferir package/dependencia a dezenas de caminhos.
  • Se a separacao de modulo gerar metodo inacessivel ou puxar cadeia pesada, reduzir o corte para o menor conjunto compilavel (geralmente Constantes + DTO) em vez de mover o modulo inteiro.
  • Em mudancas Delphi, herdar as restricoes de stack (Windows-1252, GUID via TManipuladorGUID, sem consulta direta em Form).

Saida minima esperada

  • Confirmacao de que o erro e F2046 (com a unit alvo, quando houver).
  • O que foi feito em cada etapa aplicada (limpeza de uses, units removidas, modulo movido para package).
  • Resultado do build, validado pelo log do alvo.
  • Se ainda houver F2046, qual a proxima etapa recomendada (ex.: extrair o proximo modulo candidato).
Install via CLI
npx skills add https://github.com/Ruan-Sampaio/Skills --skill out-of-memory-build-nsjfinancas
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
Ruan-Sampaio
Ruan-Sampaio Explore all skills →