Parcourir la source

Update heap.c

blueloveTH il y a 10 mois
Parent
commit
bfee435fb7
1 fichiers modifiés avec 2 ajouts et 2 suppressions
  1. 2 2
      src/interpreter/heap.c

+ 2 - 2
src/interpreter/heap.c

@@ -40,9 +40,9 @@ void ManagedHeap__collect_if_needed(ManagedHeap* self) {
     self->freed_ma[1] = self->freed_ma[2];
     self->freed_ma[1] = self->freed_ma[2];
     self->freed_ma[2] = freed;
     self->freed_ma[2] = freed;
     int avg_freed = (self->freed_ma[0] + self->freed_ma[1] + self->freed_ma[2]) / 3;
     int avg_freed = (self->freed_ma[0] + self->freed_ma[1] + self->freed_ma[2]) / 3;
-    const int upper = PK_GC_MIN_THRESHOLD * 2;
+    const int upper = PK_GC_MIN_THRESHOLD * 8;
     const int lower = PK_GC_MIN_THRESHOLD / 2;
     const int lower = PK_GC_MIN_THRESHOLD / 2;
-    float free_ratio = (float)avg_freed / PK_GC_MIN_THRESHOLD;
+    float free_ratio = (float)avg_freed / self->gc_threshold;
     int new_threshold = self->gc_threshold * (1 / free_ratio);
     int new_threshold = self->gc_threshold * (1 / free_ratio);
     // printf("gc_threshold=%d, avg_freed=%d, new_threshold=%d\n", self->gc_threshold, avg_freed, new_threshold);
     // printf("gc_threshold=%d, avg_freed=%d, new_threshold=%d\n", self->gc_threshold, avg_freed, new_threshold);
     self->gc_threshold = c11__min(c11__max(new_threshold, lower), upper);
     self->gc_threshold = c11__min(c11__max(new_threshold, lower), upper);