Как зарегистрировать потребление памяти в Linux?

Ниже приведен пример передачи параметров в документ fxml через пространство имен.

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<VBox xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1">
    <BorderPane>
        <center>
            <Label text="$labelText"/>
        </center>
    </BorderPane>
</VBox>

Определить значение External Text для переменной пространства имен labelText:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class NamespaceParameterExampleApplication extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws IOException {
        final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("namespace-parameter-example.fxml"));

        fxmlLoader.getNamespace()
                  .put("labelText", "External Text");

        final Parent root = fxmlLoader.load();

        primaryStage.setTitle("Namespace Parameter Example");
        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }
}
38
задан bialix 8 December 2009 в 16:41
поделиться

3 ответа

Небольшой скрипт типа

rm memory.log
while true; do free >> memory.log; sleep 1; done
32
ответ дан 27 November 2019 в 03:34
поделиться

Таким образом, я знаю, что опаздываю к этой игре, но я просто придумал этот ответ, поскольку я должен был сделать это и действительно не хотел дополнительные поля, которые vmstat , free , и т.д.... все, будет казаться, будут производить без избыточной фильтрации. Таким образом, вот ответ, который я придумал:

top -bd 0.1 | grep 'KiB Mem' | cut -d' ' -f10 > memory.txt

ИЛИ:

top -bd 0.1 | grep 'KiB Mem' | cut -d' ' -f10 | tee memory.txt

стандартный вывод от [1 141] top , когда grep луг с [1 143] Kib Mem :

KiB Mem : 16047368 total,  8708172 free,  6015720 used,  1323476 buff/cache

Путем выполнения этого посредством сокращения, мы отфильтровываем к буквально просто, число до [1 144] использовало

, пользователь может действительно изменить 0.1 к другому числу для выполнения различных частот дискретизации получения. В моем случае я хотел использовать top также, потому что можно выполнить статистику памяти быстрее, чем 1 секунда на получение, как Вы видите здесь, я хотел получить статистику каждая 1/10-я из секунды.

ПРИМЕЧАНИЯ: действительно оказывается, что передача по каналу до [1 148] cut вызывает КРУПНУЮ задержку вывода чего-либо в файл. Как мы позже узнали, это намного быстрее, чтобы не учесть cut команда во время сбора данных, затем выполнить команду сокращения на выходном файле позже. Кроме того, у нас не было потребности в метках времени в наших тестах.

Это таким образом смотрит следующим образом:

Начните Регистрироваться:

top -bd 0.1 | grep 'KiB Mem' | tee memory_raw.txt

Вход Выхода:

ctrl-z (to exit logging)

Фильтр:

2 уровня сокращения (фильтрация), сначала запятой, затем пространством. Это происходит из-за выравнивания [1 153] top и обеспечивает намного более чистый вывод:

cut memory_raw -d',' -f3 | tee memory_used_withlabel.txt
cut memory_used_withlabel.txt -d' ' -f3 | tee memory_used.txt
0
ответ дан 27 November 2019 в 03:34
поделиться

Вы можете указать что-то вроде

vmstat X >> mylogfile

в сценарий запуска. Поскольку ваше приложение уже запущено, вы можете просто добавить эту строку в конец сценария инициализации, который ваше приложение уже использует. (где X - количество секунд между сообщениями журнала)

2
ответ дан 27 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: