O AWS SDK for Go lida com o gerenciamento de memória durante uploads de arquivos grandes usando uma combinação de técnicas:
1. Streaming: o SDK usa streaming para fazer upload de arquivos grandes, o que significa que ele divide o arquivo em partes menores e carrega cada parte separadamente. Essa abordagem ajuda a reduzir o uso de memória carregando apenas uma pequena parte do arquivo na memória por vez[4].
2. Multipart Uploads: o SDK também oferece suporte a multipart uploads, que permitem fazer upload de arquivos grandes dividindo-os em partes menores e carregando cada parte separadamente. Essa abordagem ajuda a gerenciar o uso da memória carregando apenas uma pequena parte do arquivo na memória por vez[3].
3. Chunking: O SDK usa chunking para gerenciar o uso de memória durante uploads de arquivos grandes. Ele divide o arquivo em partes menores e carrega cada parte separadamente. Essa abordagem ajuda a reduzir o uso de memória carregando apenas uma pequena parte do arquivo na memória por vez[3].
4. Simultaneidade: o SDK oferece suporte à simultaneidade, o que significa que ele pode fazer upload de vários pedaços do arquivo simultaneamente. Essa abordagem ajuda a melhorar o desempenho de upload e reduzir o uso de memória, distribuindo a carga por várias goroutines[1].
5. Buffering: o SDK usa buffering para gerenciar o uso de memória durante uploads de arquivos grandes. Ele armazena os dados do arquivo na memória e os carrega em partes. Essa abordagem ajuda a reduzir o uso de memória carregando apenas uma pequena parte do arquivo na memória por vez[1].
Ao usar essas técnicas, o AWS SDK for Go pode lidar com uploads de arquivos grandes com eficiência e, ao mesmo tempo, gerenciar o uso de memória de maneira eficaz.
Citações:[1] https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html
[2] https://www.youtube.com/watch?v=R6W1ay4jYKk
[3] https://github.com/aws/aws-sdk-go/issues/1104
[4] https://stackoverflow.com/questions/34177137/stream-file-upload-to-aws-s3-using-go
[5] https://www.youtube.com/watch?v=HkF3_GLVKEg