Как я знаю JVM перед запуском приложения Java, он выделяет для него часть ОЗУ, и эта память может управляться пользователем перед запуском. Но есть еще одна проблема, когда я запускаю приложение, каждый раз он выполняет другое время.
Вот очень простой пример для цикла:
package timespent;
public class Main {
public static void main(String[] args) {
long startTime = System.nanoTime();
int j = 0;
for (int i = 0; i < 1.E6; i++) {
j = i + 1;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("duration = " + duration);
}
}
Он печатает разные результаты:
duration = 5720542
duration = 7331307
duration = 7737946
duration = 6899173
Скажем, я хочу, чтобы он выполнялся точными 10 000 000 наносекунд или 10 миллисекунд.
Что мне нужно?
Я хочу, чтобы приложение java выполнялось с точным выполнением времени.
Зачем мне это нужно?
Когда я запускаю приложение, я хочу показать точное время выполнения, оставшееся в окне запуска приложения, прежде чем он загрузит все компоненты.
Я полагаю, что это своего рода манипуляция с процессором, и я хотел знать, возможно ли это или нет.
Q1: Возможно ли это на Java?
Q2: Если это невозможно в Java, то есть ли способ достичь этого, обратившись к родным методам ОС. например путем приоритизации приложения Java или чего-то еще?
Q3: Как сохранить состояние приложения в файле и загрузить его в память?