2011-12-22 16 views
6

tôi đã chiến đấu với một vấn đề TransferManager trong vài tuần nay và tôi hy vọng sẽ nhận được một số thông tin phản hồi,AWS Java TransferManager vấn đề, JVM không thể lấy bất cứ bài bản địa hơn

Tôi có một ứng dụng máy chủ mà chờ đợi cho các tác vụ được gửi đến nó. Một số tác vụ này yêu cầu tải lên S3. Tác vụ chứa tất cả thông tin tải lên tôi cần bao gồm cả các phím truy cập.

Trong mã tải lên thực tế của mình, tôi cần phải tạo đối tượng S3ClientTransferManager mới mỗi lần tôi cần tải lên vì tôi không biết trước các khóa truy cập của mình.

Sau khi hệ thống xử lý khoảng 1200 video tải lên, tôi đã nhận được lỗi cho biết JVM không thể nhận thêm bất kỳ chuỗi gốc nào. Tôi đính kèm một hồ sơ để ứng dụng và nhận thấy rằng các đối tượng TransferManager đã không nhận được làm sạch đúng cách, đã có hàng ngàn chủ đề "s3-transfer-manager-worker-1" ngồi nhàn rỗi.

Tôi đã cố gắng thêm cuộc gọi đến TransferManager.shutdownNow() sau khi quá trình tải lên hoàn tất. Điều đó đã làm sạch các chủ đề. Tuy nhiên, tôi bắt đầu nhận được RejectedExecutionException bất cứ khi nào một TransferManager mới được tạo và tải lên đã được thử.

TransferManager chứa UploadMonitorUploadMonitor có static ScheduledExecutorService. TransferManager.shutdownNow() gọi phương thức tĩnh UploadMonitor.shutdownNow() gọi shutdownNow() trên dịch vụ thi hành. Điều này làm cho nó để tôi không còn có thể sử dụng bất kỳ đối tượng TransferManager, ngay cả khi tôi cố gắng tạo một đối tượng mới.

Tôi làm cách nào để sử dụng nhiều đối tượng chuyển mà không cần hết đề tài? Điều này có vẻ như nó là một lỗi.

Trả lời

Các vấn đề liên quan