gc_config.h

来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 120 行

H
120
字号
/* * @(#)gc_config.h	1.27 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * *//* * This file includes the configuration of the generational collector */#ifndef _INCLUDED_GENERATIONAL_GC_CONFIG_H#define _INCLUDED_GENERATIONAL_GC_CONFIG_H#include "javavm/include/gc/gc_impl.h"#include "javavm/include/gc/generational-seg/generational.h"/* * Barriers in this implementation */#define CVMgcimplWriteBarrierRef(directObj, slotAddr, rhsValue)           \    SET_CARD_TABLE_SLOT_FOR_ADDRESS(directObj, slotAddr, CARD_DIRTY_BYTE);/* Purpose: Override the Ref arraycopy to do more efficient barrier marking.*/#define CVMgcimplArrayCopyRef(srcArr, srcIdx, dstArr, dstIdx, len) {	 \    CVMObject* volatile *slotAddr_;					 \    CVMObject* volatile *lastAddr_;					 \									 \    /* Copy the elements first */					 \    CVMDprivateDefaultNoBarrierArrayCopy(srcArr, srcIdx, dstArr, dstIdx, \                                         len, CVMObject*, Ref);		 \    /* Batch the write barriers */					 \    slotAddr_ = (CVMObject* volatile *)					 \        CVMDprivate_arrayElemLoc((dstArr), (dstIdx));			 \    lastAddr_ = slotAddr_ + (len) - 1;					 \    SET_CARD_TABLE_SLOTS_FOR_ADDRESS_RANGE((dstArr), slotAddr_,		 \                                           lastAddr_, CARD_DIRTY_BYTE);	 \}/*  * Global state specific to GC  */#define CVM_GEN_NUM_GENERATIONS 3struct CVMGCGlobalState {    CVMUint32  heapSize;    CVMGeneration* CVMgenGenerations[CVM_GEN_NUM_GENERATIONS];    CVMInt64 lastMajorGCTime;    CVMGenSummaryTableEntry* summaryTable;    struct {	CVMUint32 youngGenSize;        CVMUint32 middleGenSize;    } genGCAttributes;    CVMUint32* heapBase;};#define CVM_GCIMPL_GC_OPTIONS \    "[,youngGen=<youngGenerationSize>][,middleGen=<middleGenerationSize>]"\    "[,verbose] "#define CVM_GC_GENERATIONAL 222#define CVM_GCCHOICE CVM_GC_GENERATIONAL/* NOTE: The DEFAULT_EDEN_SIZE_BYTES and DEFAULT_SPILL_SIZE_BYTES values are   also used to determine the ideal ratio of eden to spill generation sizes.   NOTE: The scratch buffer size has CVM_GCIMPL_SEGMENT_MALLOC_OVERHEAD   subtracted from it so that the sum of spillGenSize + edenGenSize +   scratchBufferSize doesn't pack to an even increment of   CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES.  This subtraction allows malloc   some space for its own overhead without having to internally fragment   another block of CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES.  This type of   internal fragmentation will reduce the number of blocks of   CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES available for use.  That's why we   avoid the fragmentation.*/#define CVM_GCIMPL_DEFAULT_EDEN_SIZE_BYTES          (1024 * 1024) /* 1M */#define CVM_GCIMPL_DEFAULT_SPILL_SIZE_BYTES         (512 * 1024)  /* 512k */#define CVM_GCIMPL_DEFAULT_OLD_SIZE_BYTES           (512 * 1024)  /* 512k */#define CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES          SEGMENT_ALIGNMENT#define CVM_GCIMPL_SEGMENT_USABLE_BYTES             SEGMENT_USABLE_SIZE#define CVM_GCIMPL_SEGMENT_OVERHEAD_BYTES           \    (CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES - CVM_GCIMPL_SEGMENT_USABLE_BYTES)#define CVM_GCIMPL_SEGMENT_MALLOC_OVERHEAD          MAKE_MALLOC_HAPPY#define CVM_GCIMPL_MIN_EDEN_SIZE_BYTES              (16 * 1024)#define CVM_GCIMPL_MIN_SPILL_SIZE_BYTES             \    (1 * CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES)#define CVM_GCIMPL_MIN_OLD_SIZE_BYTES               \    (1 * CVM_GCIMPL_SEGMENT_ALIGNMENT_BYTES)#define CVM_GCIMPL_MIN_TOTAL_HEAP_SIZE_BYTES        \    (CVM_GCIMPL_MIN_EDEN_SIZE_BYTES + CVM_GCIMPL_MIN_SPILL_SIZE_BYTES + \     CVM_GCIMPL_MIN_OLD_SIZE_BYTES)#define CVM_GCIMPL_SCRATCH_BUFFER_SIZE_BYTES        \    ((64 * 1024) - CVM_GCIMPL_SEGMENT_MALLOC_OVERHEAD)#endif /* _INCLUDED_GENERATIONAL_GC_CONFIG_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?