Updating text object in Blender 2.81 using python
The function recalculate_text which you're having run every frame, is also setup to create a new object every time. Pull the object creation out of the def function. Check this out.

import bpy

scene = bpy.context.scene

font_curve = bpy.data.curves.new(type="FONT",name="Font Curve")
font_curve.body = 'Current Frame: ' + str(scene.frame_current) 

font_obj = bpy.data.objects.new("Font Object", font_curve)

scene.collection.objects.link(font_obj)

def recalculate_text(scene):
    font_curve.body = 'Current Frame: ' + str(scene.frame_current) 

def register():
    bpy.app.handlers.frame_change_post.append(recalculate_text)

def unregister():
    bpy.app.handlers.frame_change_post.remove(recalculate_text)

register()