Как получить поток, и дамп "кучи" Java обрабатывают в Windows, который это не запускает в консоли

Предупреждение: [fункция] ожидает, что параметр 1 будет ресурсом, boolean задан

(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )

Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :

В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.

Расширение cURL определяет другой два типа ресурсов :

... дескриптор cURL и мультирум cURL.

Когда var_dump ed значения выглядят так:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

Это все большинство ресурсов - это числовой идентификатор ((1)) определенного типа ((curl)).

Вы переносите эти ресурсы и передаете их различным функциям, для которых такой ресурс что-то значит. Обычно эти функции выделяют определенные данные в фоновом режиме, а ресурс - это просто ссылка, которую они используют для отслеживания этих данных внутри.


«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула false. Например, функция fopen имеет это описание:

Возвращаемые значения

Возвращает ресурс указателя файла при успешном выполнении или FALSE

Таким образом, в этом коде $fp будет либо resource(x) of type (stream), либо false:

$fp = fopen(...);

Если вы не операция fopen будет успешной или неудачной и, следовательно, будет ли $fp действительным ресурсом или false и передать $fp другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

Вам всегда нужно проверять возвращаемое значение функций, которые пытаются выделить ресурс , и может выйти из строя :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Связанные ошибки:

227
задан Kasun Siyambalapitiya 25 April 2018 в 01:01
поделиться

6 ответов

Необходимо перенаправить вывод от второго исполняемого файла Java до некоторого файла. Затем используйте , SendSignal к отправляет "-3" к Вашему второму процессу.

4
ответ дан Vadzim 23 November 2019 в 03:48
поделиться

Можно отправить kill -3 <pid> из Cygwin. Необходимо использовать опции Cygwin ps найти, что процессы окон тогда просто отправляют сигнал в тот процесс.

6
ответ дан slm 23 November 2019 в 03:48
поделиться

Я рекомендую Java VisualVM, распределенный с JDK (jvisualvm.exe). Это может соединиться динамично и получить доступ к потокам и "куче". Я нашел в неоценимом для некоторых проблем.

16
ответ дан Lawrence Dol 23 November 2019 в 03:48
поделиться

Вы могли работать jconsole (включенный с Java 6 SDK), тогда соединяются с Вашим JAVA-приложением. Это покажет Вам каждое выполнение Потока и его отслеживание стека.

6
ответ дан Steve Kuo 23 November 2019 в 03:48
поделиться

В дополнение к использованию упомянутого jconsole / visualvm, вы можете использовать jstack -l в другом окне командной строки и захватить этот вывод.

можно найти с помощью диспетчера задач (это идентификатор процесса в Windows и unix) или с помощью jps .

Оба jstack и jps включены в Sun JDK версии 6 и выше.

19
ответ дан 23 November 2019 в 03:48
поделиться

Вы можете использовать jmap , чтобы получить дамп любого запущенного процесса, если вы знаете pid .

Используйте диспетчер задач или монитор ресурсов, чтобы получить идентификатор пользователя . Затем

jmap -dump:format=b,file=cheap.hprof <pid>

, чтобы получить кучу для этого процесса.

370
ответ дан 23 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

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