mirror of https://github.com/PaperMC/Paper.git
87 lines
2.8 KiB
Java
87 lines
2.8 KiB
Java
package co.aikar.timings;
|
|
|
|
import static co.aikar.timings.TimingsManager.*;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
@Deprecated(forRemoval = true)
|
|
public class FullServerTickHandler extends TimingHandler {
|
|
private static final TimingIdentifier IDENTITY = new TimingIdentifier("Minecraft", "Full Server Tick", null);
|
|
final TimingData minuteData;
|
|
double avgFreeMemory = -1D;
|
|
double avgUsedMemory = -1D;
|
|
FullServerTickHandler() {
|
|
super(IDENTITY);
|
|
minuteData = new TimingData(id);
|
|
|
|
TIMING_MAP.put(IDENTITY, this);
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
public Timing startTiming() {
|
|
if (TimingsManager.needsFullReset) {
|
|
TimingsManager.resetTimings();
|
|
} else if (TimingsManager.needsRecheckEnabled) {
|
|
TimingsManager.recheckEnabled();
|
|
}
|
|
return super.startTiming();
|
|
}
|
|
|
|
@Override
|
|
public void stopTiming() {
|
|
super.stopTiming();
|
|
if (!isEnabled()) {
|
|
return;
|
|
}
|
|
if (TimingHistory.timedTicks % 20 == 0) {
|
|
final Runtime runtime = Runtime.getRuntime();
|
|
double usedMemory = runtime.totalMemory() - runtime.freeMemory();
|
|
double freeMemory = runtime.maxMemory() - usedMemory;
|
|
if (this.avgFreeMemory == -1) {
|
|
this.avgFreeMemory = freeMemory;
|
|
} else {
|
|
this.avgFreeMemory = (this.avgFreeMemory * (59 / 60D)) + (freeMemory * (1 / 60D));
|
|
}
|
|
|
|
if (this.avgUsedMemory == -1) {
|
|
this.avgUsedMemory = usedMemory;
|
|
} else {
|
|
this.avgUsedMemory = (this.avgUsedMemory * (59 / 60D)) + (usedMemory * (1 / 60D));
|
|
}
|
|
}
|
|
|
|
long start = System.nanoTime();
|
|
TimingsManager.tick();
|
|
long diff = System.nanoTime() - start;
|
|
TIMINGS_TICK.addDiff(diff, null);
|
|
// addDiff for TIMINGS_TICK incremented this, bring it back down to 1 per tick.
|
|
record.setCurTickCount(record.getCurTickCount()-1);
|
|
|
|
minuteData.setCurTickTotal(record.getCurTickTotal());
|
|
minuteData.setCurTickCount(1);
|
|
|
|
boolean violated = isViolated();
|
|
minuteData.processTick(violated);
|
|
TIMINGS_TICK.processTick(violated);
|
|
processTick(violated);
|
|
|
|
|
|
if (TimingHistory.timedTicks % 1200 == 0) {
|
|
MINUTE_REPORTS.add(new TimingHistory.MinuteReport());
|
|
TimingHistory.resetTicks(false);
|
|
minuteData.reset();
|
|
}
|
|
if (TimingHistory.timedTicks % Timings.getHistoryInterval() == 0) {
|
|
TimingsManager.HISTORY.add(new TimingHistory());
|
|
TimingsManager.resetTimings();
|
|
}
|
|
Bukkit.getUnsafe().reportTimings();
|
|
}
|
|
|
|
boolean isViolated() {
|
|
return record.getCurTickTotal() > 50000000;
|
|
}
|
|
}
|