release dashmap memory (#1485)

This commit is contained in:
Sijie.Sun
2025-10-18 12:48:04 +08:00
committed by GitHub
parent 8f1786fa23
commit cc8f35787e
29 changed files with 339 additions and 187 deletions
+9 -5
View File
@@ -21,10 +21,13 @@ use rand::RngCore;
use tokio::{net::UdpSocket, sync::Mutex, task::JoinSet};
use super::TunnelInfo;
use crate::tunnel::{
build_url_from_socket_addr,
common::TunnelWrapper,
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
use crate::{
common::shrink_dashmap,
tunnel::{
build_url_from_socket_addr,
common::TunnelWrapper,
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
},
};
use super::{
@@ -491,12 +494,13 @@ impl WgTunnelListener {
) {
let mut tasks = JoinSet::new();
let peer_map_clone = peer_map.clone();
let peer_map_clone: Arc<DashMap<SocketAddr, Arc<WgPeer>>> = peer_map.clone();
tasks.spawn(async move {
loop {
peer_map_clone.retain(|_, peer| {
peer.access_time.load().elapsed().as_secs() < 61 && !peer.stopped()
});
shrink_dashmap(&peer_map_clone, None);
tokio::time::sleep(Duration::from_secs(1)).await;
}
});