Вы должны быть в состоянии сделать это с JNI. Выделите массив longs размером с кучу или просто меньше и вызовите метод тестирования JNI.
package com.example.aslrtest;
public class Test {
private static native void test(long[] heapa);
public void doTest()
{
long[] a=new long[size_of_available_heap/8];
for (long i=0; i!=a.length; i++)
a[i]=i;
test(a);
System.out.println(a[0]);
}
}
Затем, используя что-то вроде этого кода JNI, вы можете получить адрес этого массива.
JNIEXPORT void JNICALL Java_com_example_aslrtest_Test_test(JNIEnv * env, jclass jc, jlongArray heapa)
{
jlong* heapp;
jboolean jniNoCopy = JNI_FALSE;
heapp = (*env)->GetLongArrayElements(env, heapa, &jniNoCopy);
heapp[0] = (jlong)heapp;
(*env)->ReleaseLongArrayElements(env,heapa,heapp,0);
}
Когда этот код возвращается, первый элемент массива должен содержать адрес массива.
Имеет ли смысл это делать - это другой вопрос. Зависит от того, что вы делаете. Наверное, нет, но это ваш звонок.