Есть ли способ сбросить всю родную память? - PullRequest
0 голосов
/ 19 декабря 2018

Я создал общую библиотеку для получения доступа к системным вызовам linux для доступа от кода Java к jni и столкнулся с проблемой постоянного увеличения RSS.

Есть ли способ проверить встроенную память?Я пытался взять дамп ядра с помощью gdb:

gdb --pid=6385
gdb> gcore

Но он превратился в 9 ГБ для 400 МБ RSS.Может быть, есть какой-то другой более простой способ или инструмент для устранения этой проблемы?

Я нахожусь на Linux Ubuntu 18.04

1 Ответ

0 голосов
/ 19 декабря 2018

Стандарт C позволяет реализациям делать все, что они считают нужным, если приложение пытается получить доступ к памяти, которой оно не принадлежит.Некоторые реализации, предназначенные для низкоуровневого программирования, гарантированно гарантируют, что попытки получить доступ к хранилищу с помощью указателя, который они «не понимают», будут обрабатываться «в задокументированном виде, характерном для среды» (как правило, они рассматриваются как запросы на доступ к базовому оборудованию).адреса. Некоторые реализации, предназначенные для обработки чувствительных к безопасности приложений, могут эффективно предотвращать попытки доступа к неиспользуемому хранилищу путем активной блокировки их и «прекращения перевода или выполнения (с диагностическим сообщением)». Некоторые могут просто делать то, что удобно в любой ситуацииобстоятельство.

Авторы Стандарта признали, что реализации используются для различных целей, и что методы обработки, которые подходят для некоторых задач, не подходят для других. Согласно опубликованному обоснованию, вопрос о том, какиереализации подхода должны использовать для обработки действий, которые Стандарт рассматривает как «неопределенное поведение» как «качествоf Проблема реализации, позволяющая «рынку» решать, как должны вести себя качественные реализации, предназначенные для различных целей.

...