Как получить адрес памяти (не хеш-код) объекта Java с помощью JVMTI - PullRequest
1 голос
/ 28 декабря 2011

Я новичок в C и C ++, и я не очень хорошо знаю, как использовать JVMTI.Я хочу получить физическую область памяти (в шестнадцатеричном формате) объекта Java.Является ли это возможным?Я не хочу получать ответы типа "получить его от этого профилировщика и т. Д." ... Пока что я использую эту команду в терминале Linux:

java -showversion -agentpath:../CPrg/DLL/bin/Debug/libDLL.so SimpleMemAlloc

libDLL.so - это библиотека, которую я создаюиспользуя c, где я запускаю его с моим Java-приложением.Это на самом деле работает, работает с моим кодом, но я не знаю, как получить нужные данные.

Например, я использую этот простой код:

public class SimpleMemAlloc{

    Object [] oarray = new Object[10000];

    public static void main(String args []){
        Object [] o= new Object[100];
        for (int i= 0; i<100; i++){
        o[i] = new Integer [10000];
        }
    }
}

Я хочуполучить место в памяти (0x ...) каждого нового целочисленного массива, который я создаю ... Я буду очень рад, если получу хороший пример кода с использованием jvmti

1 Ответ

0 голосов
/ 28 декабря 2011

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

Это обычно реализуется путем преобразования внутреннего адреса объект в целое число, но эта техника реализации не требуется языком программирования JavaTM.

Для получения дополнительной информации нажмите здесь

...