erlang进程占用内存过多的查找问题过程

在开发一个模拟地图跑动的机器人程序时,发现单个Erlang进程占用内存高达40MB,经过逐步调试,排除了代码问题。通过手动GC内存降至16MB,揭示出执行结果可能导致内存开销。了解到Erlang进程会为执行结果分配内存,变量仅存储内存指针。优化建议包括合理使用`erlang:garbage_collect`,但需考虑性能影响。测试数据显示不同操作后的内存占用变化。
摘要由CSDN通过智能技术生成

最近开发一个机器人程序,其主要功能是模拟玩家在地图上跑动用来测试地图压力。主要功能代码如下:

loop(State) ->
	#state{robot_state = RobotState} = State,
	case RobotState of
		born ->
			NewState = robot_born(State),
			NextRobotState = get_next_robot_state(),
			erlang:send_after(random:uniform(3000), self(), loop),
			NewState#state{robot_state = NextRobotState};
		move ->
			robot_move(State),
			State;
		move_to_npc ->
			robot_move_to_npc(State),
			State;
		_ ->
			todo
	end.
robot_move_to_npc(State) ->
	#state{robot_player_id = RobotPlayerID, send_socket = _SendSocket} = State,
	{CurMapDataID, CX, CY} = get_cur_robot_pos(State),
	{TX, TY} = get_a_npc_point(CurMapDataID, CX, CY),
	PathList = aStar:find_path(CurMapDataID, CX div 100, CY div 100, TX, TY),
	case PathList of
		[] ->
			erlang:send_after(5000, self(), loop)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值