La quantità di memoria allocata alla funzione java lambda è condivisa da heap, meta e memoria di codice riservata.
Il comando java eseguito dal contenitore per una funzione assegnata 256M è qualcosa di simile:
java -XX:MaxHeapSize=222823k -XX:MaxMetaspaceSize=26214k -XX:ReservedCodeCacheSize=13107k -XX:+UseSerialGC -Xshare:on -XX:-TieredCompilation -jar /var/runtime/lib/LambdaJavaRTEntry-1.0.jar
222823k + 26214k + 13107k = 256M
Il comando java eseguito dal contenitore per una funzione assegnata 384M è qualcosa di simile
java -XX:MaxHeapSize=334233k -XX:MaxMetaspaceSize=39322k -XX:ReservedCodeCacheSize=39322k -XX:+UseSerialGC -Xshare:on -XX:-TieredCompilation -jar /var/runtime/lib/LambdaJavaRTEntry-1.0.jar
334233k + 39322k 39322k + = 384M
01.235.164,106174 millions
Quindi, la formula sembra essere
85% mucchio + 10% di cache meta + 5% di codice riservati = 100% della memoria funzione configurata
Onestamente non so come la "Memory Max Usato" viene calcolato il valore riportato nei registri di Cloudwatch. Non è allineato con nulla che sto vedendo.
La persona che ha votato potrebbe forse spiegare il motivo. –
Ho appena incontrato lo stesso problema. Qualcuno sa perché questo accade? –
Ho problemi simili –