001 package jp.osdl.jbento2.analyzer; 002 003 public class GCSample extends GCTransition { 004 public static final int TYPE_GC = 1; 005 006 public static final int TYPE_FULL_GC = 2; 007 008 private int type = 0; 009 010 private long startTime = -1; 011 012 private GCTransition newGC = new GCTransition();; 013 014 private GCTransition tenuredGC = new GCTransition(); 015 016 private GCTransition permGC = new GCTransition(); 017 018 public void setNewGC(GCTransition newGC) { 019 this.newGC = newGC; 020 } 021 022 public GCTransition getNewGC() { 023 return newGC; 024 } 025 026 public void setTenuredGC(GCTransition tenuredGC) { 027 this.tenuredGC = tenuredGC; 028 type = TYPE_FULL_GC; 029 } 030 031 public GCTransition getTenuredGC() { 032 return tenuredGC; 033 } 034 035 public void setPermGC(GCTransition permGC) { 036 this.permGC = permGC; 037 } 038 039 public GCTransition getPermGC() { 040 return permGC; 041 } 042 043 public long getStartTime() { 044 return startTime; 045 } 046 047 public void setStartTime(long startTime) { 048 this.startTime = startTime; 049 } 050 051 public int getType() { 052 return type; 053 } 054 055 public void setType(int type) { 056 this.type = type; 057 } 058 059 public void calculate() { 060 if (newGC.getBeforeSize() == -1) { 061 newGC.setBeforeSize(getBeforeSize() - tenuredGC.getBeforeSize()); 062 } 063 if (type == GCSample.TYPE_FULL_GC) { 064 newGC.setAfterSize(0); 065 } 066 if (newGC.getMaxSize() == -1) { 067 newGC.setMaxSize(getMaxSize() - tenuredGC.getMaxSize()); 068 } 069 070 if (tenuredGC.getAfterSize() == -1) { 071 tenuredGC.setAfterSize(getAfterSize() - newGC.getAfterSize()); 072 } 073 if (tenuredGC.getBeforeSize() == -1) { 074 tenuredGC.setBeforeSize(getBeforeSize() - newGC.getBeforeSize()); 075 } 076 if (tenuredGC.getMaxSize() == -1) { 077 tenuredGC.setMaxSize(getMaxSize() - newGC.getMaxSize()); 078 } 079 } 080 }