Rumah > Soal Jawab > teks badan
当消息生产者生产消息的能力远远大于消息的消费者的消费能力时,程序会发生什么事?
例如我这里有组桥接的生产者,每30秒会发布3700万条消息,而消费者就是一个简单的客户端,处理这3700万条消息,消费者会发生什么事?
//我知道消费者的缓冲队列会爆满溢出,导致内存泄露
怎么解决?
高洛峰2017-04-18 10:32:07
Pertama sekali, ini tidak dipanggil kebocoran ingatan. Namanya agak longgar
Jika anda tidak mempunyai keperluan kebolehpercayaan yang tinggi, anda boleh mempertimbangkan untuk membuang beberapa secara rawak
Perkakasan Pengembangan
Jika anda mempunyai keperluan untuk kebolehpercayaan. Secara mudahnya, ia dibuang ke dalam cakera keras atau pangkalan data terlebih dahulu, ia tidak boleh disimpan dalam memori. Ia sedikit seperti contoh Socket di Java Terdapat InputStream dan OutputStream yang masing-masing mengekalkan baris gilir SendQ dan baris gilir RecvQ, tetapi ia berada dalam memori dan kami hanya meletakkannya pada cakera keras.
黄舟2017-04-18 10:32:07
Walaupun memori itu bocor, ia tetap tidak ranap. RejectedExecutionHandler mengendalikan tugasan yang ditolak, mengapa tidak menggunakan redis, haha