<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 3.0.12 3.1.8
* Java version: 1.8

### Steps to reproduce this issue

1. consumer及provider 通过环境变量，设置参数 future.sync.set=false
2. provider返回的报文较大
3. 3.0.12版本的调用，dubbo协议不会产生频繁GC问题，triple会产生
4. 3.1.8版本调用，dubbo协议及triple协议都会产生频繁GC问题

Pls. provide [GitHub address] to reproduce this issue.

### Expected Behavior
Consumer通过dubbo或triple请求，设置了future.sync.set=false  不会在IntenalThreadLocal中保存返回结果，不再产生频繁GC问题

<!-- What do you expect from the above steps？-->

### Actual Behavior
统一设置了参数 future.sync.set=false
**3.0.12版本:**

> Dubbo协议调用 

及时清除了FutureContext，生效原因
<img width="1135" alt="image" src="https://github.com/apache/dubbo/assets/33999699/cca05d9d-dacd-4cf9-95d9-a72f9e20533d">
并在之后响应过程中清除了FutureContext
<img width="1088" alt="image" src="https://github.com/apache/dubbo/assets/33999699/c63dff14-6814-41ac-8ad2-d35968f4cd8a">
且因参数future.sync.set=false 之后也不再设置FutureContext，从而能够解决频发GC的情况

> Tiple协议调用
 
Tiple未及时清除了FutureContext原因
<img width="1027" alt="image" src="https://github.com/apache/dubbo/assets/33999699/2a71560a-2053-4d9e-8f88-07e976e7c713">
且没有在接收到响应后清除InternalThreadLocal
虽参数future.sync.set=false，但已经将FutureContext设置进了InternalThreadLocal，会造成频繁GC的情况
**3.1.8版本:**
Dubbo协议、Triple协议都没有及时清除FutureContext

> Dubbo协议调用 

<img width="1147" alt="image" src="https://github.com/apache/dubbo/assets/33999699/6b170820-1088-423f-8634-563944f6b00b">

> Tiple协议调用 

Triple未清除原因 同3.0.12
<!-- What actually happens? -->


} finally {
                InternalThreadLocalMap.set(originTL);
            }
            CompletableFuture<AppResponse> future = new CompletableFuture<>();
            AppResponse rpcResult = new AppResponse(copiedInvocation);
            if (result instanceof AsyncRpcResult) {
                result.whenCompleteWithContext((r, t) -> {
                    if (t != null) {
                        rpcResult.setException(t);
                    } else {
                        if (r.hasException()) {
                            rpcResult.setException(r.getException());
                        } else {
                            Object rebuildValue = rebuildValue(invocation, desc, r.getValue());
                            rpcResult.setValue(rebuildValue);
                        }
                    }
                    rpcResult.setObjectAttachments(new HashMap<>(r.getObjectAttachments()));
                    future.complete(rpcResult);
                });
            } else {
                if (result.hasException()) {
                    rpcResult.setException(result.getException());
                } else {
                    Object rebuildValue = rebuildValue(invocation, desc, result.getValue());
                    rpcResult.setValue(rebuildValue);
                }
                rpcResult.setObjectAttachments(new HashMap<>(result.getObjectAttachments()));
                future.complete(rpcResult);
            }