Memory leak when no draw calls issued to encoder

I noticed that when the render command encoder adds no draw calls an apps memory usage seems to grow unboundedly. Using a super simple MTKView-based drawing with the following delegate (code at end).

If I add the simplest of draw calls, e.g., a single vertex, the app's memory usage is normal, around 100-ish MBs.

I am attaching a couple screenshot, one from Xcode and one from Instruments.

What's going on here? Is this an illegal program? If yes, why does it not crash, such as if the encode or command buffer weren't ended.

Or is there some race condition at play here due to the lack of draws?

class Renderer: NSObject, MTKViewDelegate {
  var device: MTLDevice
  var commandQueue: MTL4CommandQueue
  var commandBuffer: MTL4CommandBuffer
  var allocator: MTL4CommandAllocator

  override init() {
    guard let d = MTLCreateSystemDefaultDevice(),
      let queue = d.makeMTL4CommandQueue(),
      let cmdBuffer = d.makeCommandBuffer(),
      let alloc = d.makeCommandAllocator()
    else {
      fatalError("unable to create metal 4 objects")
    }
    self.device = d
    self.commandQueue = queue
    self.commandBuffer = cmdBuffer
    self.allocator = alloc
    super.init()
  }

  func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {}

  func draw(in view: MTKView) {
    guard let drawable = view.currentDrawable else { return }
    commandBuffer.beginCommandBuffer(allocator: allocator)
    guard let descriptor = view.currentMTL4RenderPassDescriptor,
      let encoder = commandBuffer.makeRenderCommandEncoder(
        descriptor: descriptor
      )
    else {
      fatalError("unable to create encoder")
    }
    encoder.endEncoding()
    commandBuffer.endCommandBuffer()
    commandQueue.waitForDrawable(drawable)
    commandQueue.commit([commandBuffer])
    commandQueue.signalDrawable(drawable)
    drawable.present()
  }
}
Memory leak when no draw calls issued to encoder
 
 
Q