package io.haskins.java.cloudtrailviewer.service; import javafx.concurrent.Task; import javafx.scene.control.Label; import org.springframework.stereotype.Service; /** * Created by markhaskins on 05/02/2017. */ @Service public class MemoryCheckService { private final Runtime runtime = Runtime.getRuntime(); private Task task; MemoryCheckService() { checkMemory(); } public void addLabel(Label label) { label.textProperty().bind(task.messageProperty()); } private void checkMemory() { task = new Task<Void>() { @Override protected Void call() throws Exception { while(true) { long total = runtime.totalMemory() / 1024 / 1024; long free = runtime.freeMemory() / 1024 / 1024; long max = runtime.maxMemory() / 1024 / 1024; long used = total - free; updateMessage(String.format("Memory : Used %sMb | Free %dMb | Max Available %dMb", used, free, max)); try { Thread.sleep(5000); } catch (InterruptedException interrupted) { if (isCancelled()) { updateMessage("Cancelled"); break; } } } return null; } }; new Thread(task).start(); } }