mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 16:50:58 +00:00 
			
		
		
		
	runtime: fix trigger for concurrent GC
Adjust triggergc so that we trigger when we have used 7/8 of the available heap memory. Do first collection when we exceed 4Mbytes. Change-Id: I467b4335e16dc9cd1521d687fc1f99a51cc7e54b Reviewed-on: https://go-review.googlesource.com/3149 Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
		
							parent
							
								
									fe40cdd756
								
							
						
					
					
						commit
						34bc85f6f3
					
				
					 2 changed files with 7 additions and 4 deletions
				
			
		|  | @ -31,10 +31,12 @@ type pageID uintptr | |||
| // base address for all 0-byte allocations | ||||
| var zerobase uintptr | ||||
| 
 | ||||
| // Trigger the concurrent GC when 1/triggerratio memory is available to allocate. | ||||
| // Adjust this ratio as part of a scheme to ensure that mutators have enough | ||||
| // memory to allocate in durring a concurrent GC cycle. | ||||
| var triggerratio = int64(8) | ||||
| 
 | ||||
| // Determine whether to initiate a GC. | ||||
| // Currently the primitive heuristic we use will start a new | ||||
| // concurrent GC when approximately half the available space | ||||
| // made available by the last GC cycle has been used. | ||||
| // If the GC is already working no need to trigger another one. | ||||
| // This should establish a feedback loop where if the GC does not | ||||
| // have sufficient time to complete then more memory will be | ||||
|  | @ -44,7 +46,7 @@ var zerobase uintptr | |||
| // A false negative simple does not start a GC, a false positive | ||||
| // will start a GC needlessly. Neither have correctness issues. | ||||
| func shouldtriggergc() bool { | ||||
| 	return memstats.heap_alloc+memstats.heap_alloc*3/4 >= memstats.next_gc && atomicloaduint(&bggc.working) == 0 | ||||
| 	return triggerratio*(int64(memstats.next_gc)-int64(memstats.heap_alloc)) <= int64(memstats.next_gc) && atomicloaduint(&bggc.working) == 0 | ||||
| } | ||||
| 
 | ||||
| // Allocate an object of size bytes. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rick Hudson
						Rick Hudson