SpringCloudGateway 3.1.4版本 Netty内存泄漏问题解决
一、 产生的异常
当时是服务器访问不到服务了,上去一看,无法申请资源OutOfDirectMemoryError了,内存级别的东西让人一阵头大,赶紧在线下模拟,
1. 减少分配的堆外内存,打开Netty的监测工具等有助于复现的配置和检查的信息
-XX:MaxDirectMemorySize=2M
-Dio.netty.leakDetection.acquireAndReleaseOnly=true
-Dio.netty.leakDetectionLevel=paranoid
-Dio.netty.leakDetection.targetRecords=50
-XX:-OmitStackTraceInFastThrow
-XX:NativeMemoryTracking=detail
Netty的内存泄漏检测分为四个级别:
- DISABLED - 完成禁止检测内存泄漏,这个是不推荐。
- SIMPLE - 如果buffer中出现1%的内存泄漏,打印错误日志,就是上面那样。但是日志是看不到详细在什么位置出现了内存泄漏。鉴于性能考虑,这个是在生产环境中默认使用。
- ADVANCED - 如果buffer的1%出现内存泄漏,打印错误,并且输出详细的内存泄漏信息。
- PARANOID - 这个和ADVANCED输出的内容是一样的,但它会对每一次请求的buffer做检查。很适用于调试和单元测试。
建议
1、为了今早的发现问题,强烈建议在开发调试过程中,把检测级别设为PARANOID,设置:
io.netty.leakDetection.level=PARANOID
2023-12-19 17:33:47.568 ERROR 19740 --- [tor-http-nio-54] reactor.netty.transport.ServerTransport : [158851ed, L:/127.0.0.1:10101 - R:/127.0.0.1:58747] onUncaughtException(SimpleConnection{channel=[id: 0x158851ed, L:/127.0.0.1:10101 - R:/127.0.0.1:58747]})io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 2048 byte(s) of direct memory (used: 2095623, max: 2097152)at io.netty.util.internal.PlatformDependent.incrementMemoryCounter(PlatformDependent.java:845) ~[netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:774) ~[netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.allocateDirect(UnpooledUnsafeNoCleanerDirectByteBuf.java:30) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledDirectByteBuf.<init>(UnpooledDirectByteBuf.java:64) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeDirectByteBuf.<init>(UnpooledUnsafeDirectByteBuf.java:41) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.<init>(UnpooledUnsafeNoCleanerDirectByteBuf.java:25) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnsafeByteBufUtil.newUnsafeDirectByteBuf(UnsafeByteBufUtil.java:632) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:399) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:140) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:120) ~[netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:150) ~[netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.84.Final.jar:4.1.84.Final]at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
二、 检查内存泄漏点位
由于有点多,还特意把检测的详细条数改到了50。
挨个查看是不是有自己写的代码或者熟悉的代码,看了一遍没认识的,完蛋这会麻烦了,各种找资料(百度),上官网(Netty的Issues · netty/netty · GitHub)(gateway的LEAK: ByteBuf.release() · Issue #26937 · spring-projects/spring-framework · GitHub)各种查,大部分都是版本问题但是都是老版本,我看我的都是新版的了咋还有,DEBUG后发现总是在请求进来时申请一次2048的,在后续的处理中涨涨降降最后就是这点没释放
2023-12-19 09:33:12.933 [reactor-http-nio-35] ERROR io.netty.util.ResourceLeakDetector - LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records:
#1:io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)io.netty.util.ReferenceCountUtil.safeRelease(ReferenceCountUtil.java:116)io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:271)io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352)io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:421)io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354)io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895)io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:921)io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:907)io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:893)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531)io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125)io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356)io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:923)io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:907)io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:893)reactor.netty.channel.MonoSendMany$SendManyInner$AsyncFlush.run(MonoSendMany.java:789)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#2:Hint: 'DefaultChannelPipeline$HeadContext#0' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:962)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.write(CombinedChannelDuplexHandler.java:526)io.netty.handler.codec.http.HttpObjectEncoder.writeOutList(HttpObjectEncoder.java:118)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:110)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#3:io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufContent(HttpObjectEncoder.java:405)io.netty.handler.codec.http.HttpObjectEncoder.encodeNotHttpMessageContentTypes(HttpObjectEncoder.java:285)io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:181)io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:203)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:97)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#4:io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufAndTrailers(HttpObjectEncoder.java:453)io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufContent(HttpObjectEncoder.java:403)io.netty.handler.codec.http.HttpObjectEncoder.encodeNotHttpMessageContentTypes(HttpObjectEncoder.java:285)io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:181)io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:203)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:97)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#5:Hint: 'reactor.left.httpCodec' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:962)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#6:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)org.springframework.cloud.gateway.support.ServerWebExchangeUtils$1.lambda$getBody$0(ServerWebExchangeUtils.java:375)reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:86)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:44)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#7:org.springframework.core.io.buffer.NettyDataBuffer.release(NettyDataBuffer.java:326)org.springframework.core.io.buffer.DataBufferUtils.release(DataBufferUtils.java:521)org.springframework.core.codec.StringDecoder.decode(StringDecoder.java:192)org.springframework.core.codec.StringDecoder.decode(StringDecoder.java:61)org.springframework.core.codec.AbstractDataBufferDecoder.decodeDataBuffer(AbstractDataBufferDecoder.java:109)org.springframework.core.codec.AbstractDataBufferDecoder.lambda$decodeToMono$1(AbstractDataBufferDecoder.java:96)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1817)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:603)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#8:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)org.springframework.cloud.gateway.support.ServerWebExchangeUtils$1.lambda$getBody$0(ServerWebExchangeUtils.java:375)reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:86)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:44)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:603)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#9:io.netty.handler.codec.http.DefaultHttpContent.release(DefaultHttpContent.java:92)io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:367)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#10:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:106)reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#11:reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:185)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#12:Hint: [a2330415-3, L:/127.0.0.1:10101 - R:/127.0.0.1:52736] Receiver reactor.core.publisher.FluxMap$MapSubscriber will handle the message from this pointio.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:360)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#13:Hint: 'reactor.right.reactiveBridge' will handle the message from this point.io.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#14:Hint: 'reactor.left.httpTrafficHandler' will handle the message from this point.io.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#15:io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#16:Hint: 'reactor.left.httpCodec' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#17:Hint: 'DefaultChannelPipeline$HeadContext#0' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
Created at:io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:403)io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188)io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179)io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:140)io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:120)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:150)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
三、 修复
别看上面一堆很长,关键的就是几个点:
Hint: 开头的
Spring的一些
如果有自己的代码记得释放就好,我的没有就需要对比试用版本和泄漏点是不是有使用没有释放,或者释放未成功。
第一次试着升级了gateway的版本但是无效,后来想单独升级会不会有冲突,回滚后一起升级的Springboot+SpringCloud,试运行后还是不行,查看依赖时发现Libraries中旧版Jar包引入在未删除,造成了冲突,删除后,Maven刷新,在运行一切就正常了。
原版本:
<spring-boot.version>2.6.13</spring-boot.version> <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version> <spring-cloud.version>2021.0.5</spring-cloud.version>
升级后版本:
<spring-boot.version>2.6.15</spring-boot.version> <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version> <spring-cloud.version>2021.0.8</spring-cloud.version>
推荐堆外内存监控程序和检查的一些资料可以参考:
spring gateway LEAK: ByteBuf.release() was not called before it's garbage-collected - 望)=天涯 - 博客园 (cnblogs.com)
SpringCloud-Gateway OutOfDirectMemoryError排查-CSDN博客
Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持-CSDN博客
还有一些找不到了,每个里面找个有用的汇总起来解决;希望可以帮到有需要的朋友
相关文章:
SpringCloudGateway 3.1.4版本 Netty内存泄漏问题解决
一、 产生的异常 当时是服务器访问不到服务了,上去一看,无法申请资源OutOfDirectMemoryError了,内存级别的东西让人一阵头大,赶紧在线下模拟, 1. 减少分配的堆外内存,打开Netty的监测工具等有助于复现的…...

STM32内部是怎么工作的
STM32是怎么工作的 1 从孩子他妈说起2 早期计算机的组成2.1 五大元件(1)第一个出场的是电容元件(2)第二个出场的是二极管(3)第三个出场的是电阻元件(4)第四个出场的是电感࿰…...

MyBatis的配置文件
目录 MyBatis配置 1.properties标签 2.typeAliases标签 3.Mappers标签 一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项,根据实际情况,可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。 这个配置文件包含了环境设置、数…...
MCU平台下确定栈空间大小的方法
本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时,Image文件被划分为代码区,数据区,BSS区,堆区,栈区。其中,代码区,数据区,BSS区空间大小由编译器…...

Flink系列之:SQL提示
Flink系列之:SQL提示 一、动态表选项二、语法三、例子四、查询提示五、句法六、加入提示七、播送八、随机散列九、随机合并十、嵌套循环十一、LOOKUP十二、进一步说明十三、故障排除十四、连接提示中的冲突案例十五、什么是查询块 SQL 提示可以与 SQL 语句一起使用来…...

机器学习算法---聚类
类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…...

gitlab ci pages
参考文章 gitlab pages是什么 一个可以利用gitlab的域名和项目部署自己静态网站的机制 开启 到gitlab的如下页面 通过gitlab.ci部署项目的静态网站 # build ruby 1/3: # stage: build # script: # - echo "ruby1"# build ruby 2/3: # stage: build …...
Web ML 库的Transformers.js 提供文本转语音功能
JavaScript 库 Transformers.js 提供了类似 Python Transformers 库的功能,设计用于在 Web 浏览器中直接运行 Transformer 模型,而不再需要外部服务器参与处理。在最新的 2.7 版本中,Transformers.js 引入了增强功能,其中包括文本…...

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜E
老老规矩,看目录,平均每年2E,跟2D一样,D是全对,E是全错,侧面也看出10道题,大概是3A/B,3C,2D,2E,其实还是蛮平均的。但E为1道的情况居多。 第20题…...
【Linux基本指令(2)】
文章目录 一. 基本指令第二回 一. 基本指令第二回 cp指令语法 cp src dst 将目标文件或者目录拷贝到指定目录下或文件下。注意同级目录下,不允许存在同名文件或同名目录。如果将一个file.txt文件拷贝到当前目录下,就重名了,报错cp不了&#…...
Debian系统设置SSH密钥登陆
如果没有安装ssh,root权限运行apt install openssh-server进行安装。 ssh-keygen -t rsa # 生成配对密钥,后续一路enter即可会在用户目录(即~这个)下生成.ssh文件夹,里面的id_rsa是私钥,id_rsa.pub是公钥…...

uniapp cli开发和HBuilderX开发
uniapp cli开发和HBuilderX开发 前言 uniapp是一个跨平台的开发框架,可以开发出微信小程序、支付宝小程序、百度小程序、头条小程序、H5、App等,开发者只需要写一套代码,就可以发布到各个平台,大大提高了开发效率。 uniapp的开…...

【Java异常】idea 报错:无效的目标发行版:17 的解决办法
【Java异常】idea 报错:无效的目标发行版:17 的解决办法 一,问题来源 springcloud的第一个demo项目就给我干趴了 二、原因分析 java: 无效的目标发行版: 17 原因就是 JDK 版本不对。从 IDEA 编辑器中可以找到问题的原因所在,…...

代码提交规范-ESLint+Prettier+husky+Commitlint
代码提交规范-ESLintPrettierhuskyCommitlint 配置eslint (3步)配置prettier(4步)1.安装配置prettier2.设置忽略文件 .prettierignore3.处理eslint冲突4. 配置vscode 的settings.json husky安装并配置lint-staged(3步)安装配置com…...
手动实现 Vue 3的简易双向数据绑定(模仿源码)
Vue 3 带来了许多令人兴奋的新特性和改进,其中之一就是其双向数据绑定的实现方式。与 Vue 2 使用 Object.defineProperty 不同,Vue 3 利用了 JavaScript 的 Proxy 特性来创建响应式数据。在这篇博客中,我们将探讨 Vue 3 中双向数据绑定的基础…...

LVS最终奥义之DR直接路由模式
1 LVS-DR(直接路由模式) 1.1 LVS-DR模式工作过程 1.客户端通过VIP将访问请求报文(源IP为客户端IP,目标IP为VIP)发送到调度器 2.调度器通过调度算法选择最适合的节点服务器并重新封装数据报文(将源mac地址改为调度器的mac地址&am…...

t-SNE高维数据可视化实例
t-SNE:高维数据分布可视化 实例1:自动生成一个S形状的三维曲线 实例1结果: 实例1完整代码: import matplotlib.pyplot as plt from sklearn import manifold, datasets """对S型曲线数据的降维和可视化"&q…...
配置应用到k8s
配置应用到k8s,前置条件是安装了Docker,Minikube,kubectl 应用已经通过Docker生成本地镜像文件 1,创建godemo-deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: godemo-deploymentspec:replicas: 3 #启动三个…...

(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式
目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1)保护二极管及上、下拉电阻 2) P-MOS 管和 N-MOS 管 3)输出数据寄存器 3.1)ODR 端口输出数据寄存器 3.2)BSRR 端口位设置/清除寄存器 4&a…...

你知道跨站脚本攻击吗?一篇带你了解什么叫做XSS
1.XSS简介 (1)XSS简介 XSS作为OWASP TOP 10之一。 XSS中文叫做跨站脚本攻击(Cross-site scripting),本名应该缩写为CSS,但是由于CSS(Cascading Style Sheets,层叠样式脚本&#x…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
6.9本日总结
一、英语 复习默写list11list18,订正07年第3篇阅读 二、数学 学习线代第一讲,写15讲课后题 三、408 学习计组第二章,写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语:复习l默写sit12list17&#…...