HashZhang commented on PR #10021: URL: https://github.com/apache/dubbo/pull/10021#issuecomment-1147215039
嗯,思路挺好的~不过,我这里有些疑问以及思考,仅供交流:MemorySafeLBQ 是限制每个队列对象的使用内存大小,但是使用 Instrumetation.getObjectSize() 只能检查这个对象的占用,这个对象引用的对象的内存占用米有算进去。实际业务使用引用非常复杂, 放入队列的一般是门面对象,主要内存占用不在这里。然后是 MemoryLimitedLBQ 通过 MemoryMXBean 查看当前堆内存实际占用,但是没有考虑 GC 的因素,当前内存占用也许大部分都是可以回收的的,也许 YoungGC 之后就有那么多内存可以使用了。总体来看,MemorySafeLBQ 限制并没有限制住,MemoryLimitedLBQ 限制的可能太死。这个可能还是需要底层 JDK + JNI 去实现,查看队列中的对象的存活时间,结合整个堆对象的存活时间以及占用情况,判断是否真的内存紧缺了。或者是限制一个队列用的内存大小,但是检查里面放入� �象的本身内存以及所有引用内存。 不过这些,其实引入 Project Valhalla 以及 Project Loom 之后就都好说了,不需要线程池了。但是这个限制内存占用的队列还是有意义的,我觉得可以向 Java 社区提一下这个建议 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
