Al trabajar con ConcurrentLinkedQueue, cómo puedo limitar el tamaño de la cola. ¿Es posible que lo haga a través de una excepción de memoria?Prevención de ConcurrentLinkedQueue <T> from outofmemory Excepción
6
A
Respuesta
5
El tamaño de un ConcurrentLinkedQueue
no tiene límites, por lo que si los productores ponen artículos más rápido de lo que los consumidores pueden eliminarlos, eventualmente se los comerá en la memoria. Si desea limitar el tamaño de la cola, intente con una cola de bloqueo, como LinkedBlockingQueue
o ArrayBlockingQueue
. El tamaño del primero puede ser opcionalmente limitado, mientras que el segundo siempre está limitado.
0
Estoy un poco retrasado en esto, pero siempre puede establecer un límite superior y, cuando se supera, su método consumirá un token para dejar espacio para el siguiente y así sucesivamente.
Cuestiones relacionadas
- 1. Excepción OutOfMemory
- 2. Cómo simular excepción OutOfMemory
- 3. OutOfMemory Excepción al dibujar el cubo
- 4. Excepción de "OutOfMemory" solo en Samsung Galaxy S3
- 5. tamaño de ConcurrentLinkedQueue
- 6. C# prevención colección fue modificada excepción
- 7. OutOfMemory Excepción en la ejecución remota usando Powershell Invoke-Command
- 8. ¿Cómo usar ConcurrentLinkedQueue?
- 9. LinkedBlockingQueue vs ConcurrentLinkedQueue
- 10. descompresión GZIP C# OutOfMemory
- 11. Prevención XSS. Manejar <script es suficiente?
- 12. Memoria y Actividades :: OutOfMemory
- 13. Excepción de OutOfMemory de BinaryFormatter.Deserialize procedente de su llamada interna StringBuilder
- 14. Prevención Llamada al método sin excepción con @PreAuthorize Anotación
- 15. Prevención de la lista duplicada <T> Entradas
- 16. JPA Hibernate DBCP Tomcat OutOfMemory
- 17. Excepción de OutOfMemory aparece mientras se desplaza por la lista de imágenes
- 18. Java OutOfMemory excepción: error en el archivo de carga mmap postal
- 19. excepción OutOfMemory al cargar mapa de bits desde el almacenamiento externo
- 20. Cómo detectar si la carga de una imagen generará una excepción OutOfMemory en .NET?
- 21. Prevención de ataque XSS
- 22. Prevención de ataques XSS
- 23. Prevención de punteros locales
- 24. ConcurrentLinkedQueue $ El nodo permanece en el montón después de eliminar()
- 25. OutOfMemory cuando lista archivos en un directorio
- 26. Prevención de StackOverFlow en funciones recursivas
- 27. PreferenceScreen - <intent .../> - Excepción - FLAG_ACTIVITY_NEW_TASK
- 28. Prevención de ejecución de memoria MIPS
- 29. Prevención de inyección SQL en ASP.Net
- 30. OutOfMemory al leer grandes cantidades de datos usando Hibernate
Gracias por su respuesta, Sin embargo, utilicé ConcurrentLinkedQueue porque es concurrente, ¿Está sugiriendo clases no ordinarias que requerirán que agregue sincronización al acceder a estas variables? – Youval
@Youval, todas las implementaciones de 'BlockingQueue' son seguras para subprocesos, como se declara en [los documentos de API] (http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html) –
Sin embargo, bloquear un hilo podría afectar el rendimiento general de la aplicación en aplicaciones altamente concurrentes. Entonces hay contras y pros. –