### Godot version

4.0 beta17

### System information

win10 Gles3 

### Issue description

i am using tilemap to setup RTS game.
use draw_dashed_line function drew 192 v-dashlines  , 192 h-dashlines, 
the _draw function run only once , 
than run my scene , 2G memory has been consumed.
The following is the comparison data （before and drew）：
before：
![%HLAHK A3ULQD8}4DTW0254](https://user-images.githubusercontent.com/6269655/216816409-d62398c1-2cf8-4a95-ad72-0cee5702700e.png)
after
![2 Z(P162O 7LRXR6{C@}VEW](https://user-images.githubusercontent.com/6269655/216816415-1034ee58-43c2-45a9-a3dc-e3c315a16101.png)
---
the code 
---
func _draw():
	if world:
		draw_pave_grid()
	print("drawn")

func draw_pave_grid():
	var k =0
	for i in world.tmapSize.y:
		draw_dashed_line(Vector2(world.worldStart.x,world.worldStart.y+i*world.cellSize.y),
			Vector2(world.worldEnd.x,world.worldStart.y+i*world.cellSize.y),_line_color,_line_width)
		k+=1			
	
	for i in world.tmapSize.x:
		draw_dashed_line(Vector2(world.worldStart.x+i*world.cellSize.x,world.worldStart.y),
			Vector2(world.worldStart.x+i*world.cellSize.x,world.worldEnd.y),_line_color,_line_width)
		k+=1

and the world size is :  wsize (8032, 4256) 
the cell size is  32X32
...
wstart (-1504, -800) wend (6528, 3456) wsize (8032, 4256) whsize (4016, 2128) center (2512, 1328) 
384 lines drew



### Steps to reproduce

setup a big tilemap with 32X32 tile , map size is about 8K X 4K,
then darw dash line(about 200X200) grid  once 
the memory will be eat up




### Minimal reproduction project

sorry
ClassDB::bind_method(D_METHOD("set_material", "material"), &CanvasItem::set_material);
	ClassDB::bind_method(D_METHOD("get_material"), &CanvasItem::get_material);
	ClassDB::bind_method(D_METHOD("set_use_parent_material", "enable"), &CanvasItem::set_use_parent_material);
	ClassDB::bind_method(D_METHOD("get_use_parent_material"), &CanvasItem::get_use_parent_material);
	ClassDB::bind_method(D_METHOD("set_notify_local_transform", "enable"), &CanvasItem::set_notify_local_transform);
	ClassDB::bind_method(D_METHOD("is_local_transform_notification_enabled"), &CanvasItem::is_local_transform_notification_enabled);
	ClassDB::bind_method(D_METHOD("set_notify_transform", "enable"), &CanvasItem::set_notify_transform);
	ClassDB::bind_method(D_METHOD("is_transform_notification_enabled"), &CanvasItem::is_transform_notification_enabled);
	ClassDB::bind_method(D_METHOD("force_update_transform"), &CanvasItem::force_update_transform);
	ClassDB::bind_method(D_METHOD("make_canvas_position_local", "screen_point"), &CanvasItem::make_canvas_position_local);
	ClassDB::bind_method(D_METHOD("make_input_local", "event"), &CanvasItem::make_input_local);
	ClassDB::bind_method(D_METHOD("set_visibility_layer", "layer"), &CanvasItem::set_visibility_layer);
	ClassDB::bind_method(D_METHOD("get_visibility_layer"), &CanvasItem::get_visibility_layer);
	ClassDB::bind_method(D_METHOD("set_visibility_layer_bit", "layer", "enabled"), &CanvasItem::set_visibility_layer_bit);
	ClassDB::bind_method(D_METHOD("get_visibility_layer_bit", "layer"), &CanvasItem::get_visibility_layer_bit);
	ClassDB::bind_method(D_METHOD("set_texture_filter", "mode"), &CanvasItem::set_texture_filter);
	ClassDB::bind_method(D_METHOD("get_texture_filter"), &CanvasItem::get_texture_filter);
	ClassDB::bind_method(D_METHOD("set_texture_repeat", "mode"), &CanvasItem::set_texture_repeat);
	ClassDB::bind_method(D_METHOD("get_texture_repeat"), &CanvasItem::get_texture_repeat);
	ClassDB::bind_method(D_METHOD("set_clip_children_mode", "mode"), &CanvasItem::set_clip_children_mode);
	ClassDB::bind_method(D_METHOD("get_clip_children_mode"), &CanvasItem::get_clip_children_mode);
	GDVIRTUAL_BIND(_draw);
	ADD_GROUP("Visibility", "");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible");
	ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate"), "set_modulate", "get_modulate");
	ADD_PROPERTY(PropertyInfo(Variant::COLOR, "self_modulate"), "set_self_modulate", "get_self_modulate");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_behind_parent"), "set_draw_behind_parent", "is_draw_behind_parent_enabled");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "top_level"), "set_as_top_level", "is_set_as_top_level");
	ADD_PROPERTY(PropertyInfo(Variant::INT, "clip_children", PROPERTY_HINT_ENUM, "Disabled,Clip Only,Clip + Draw"), "set_clip_children_mode", "get_clip_children_mode");