>  Q&A  >  본문

java - 当消息生产者生产消息的能力远远大于消息的消费者的消费能力时,该如何解决内存泄漏的问题?

当消息生产者生产消息的能力远远大于消息的消费者的消费能力时,程序会发生什么事?

例如我这里有组桥接的生产者,每30秒会发布3700万条消息,而消费者就是一个简单的客户端,处理这3700万条消息,消费者会发生什么事?

//我知道消费者的缓冲队列会爆满溢出,导致内存泄露

怎么解决?

PHP中文网PHP中文网2741일 전589

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:32:07

    • 우선 이것을 메모리 누수라고 부르지는 않습니다. 이름이 좀 헐렁하네요

    • 신뢰도 요구 사항이 높지 않은 경우 일부를 무작위로 버리는 것을 고려할 수 있습니다

    • 확장 하드웨어

    • 신뢰성에 대한 요구사항이 있는 경우. 쉽게 말하면 하드디스크나 데이터베이스에 먼저 던져지게 된다. 즉, 메모리에 저장할 수 없다. 이는 Java의 Socket 인스턴스와 약간 비슷합니다. 각각 SendQ 대기열과 RecvQ 대기열을 유지하는 InputStream 및 OutputStream이 있지만 이는 메모리에 있으므로 하드 디스크에 넣기만 하면 됩니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:32:07

    RejectedExecutionHandler은 없나요?

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 10:32:07

    메모리가 유출되더라도 여전히 충돌은 발생하지 않습니다. RejectedExecutionHandler는 거부된 작업을 처리합니다. Redis를 사용하는 것은 어떨까요? 하하

    회신하다
    0
  • 취소회신하다