2011-12-28 2 views
1

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

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

Да, я знаю, что ... Есть ли способ, которым я могу это сделать в JVMTI ... Мне все равно, если в следующую секунду они перемещаются ... Я просто хочу найти их фактическое местоположение памяти в этот конкретный момент. –

+0

Я считаю, что вам это не нужно. В любом случае 'sun.misc.Unsafe' - это то, что вы ищете. –

ответ

0

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

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

Для получения дополнительной информации click here

+0

Это неправильно. Хэш-код идентификатора объекта не является адресом. Идентификатор хеш-кода является постоянным, но адрес может измениться. В частности, когда сборщик мусора копирует объект, чтобы освободить место. – Raedwald

 Смежные вопросы

  • Нет связанных вопросов^_^