Можно использовать java.lang.instrument пакет
Компиляция и поместить этот класс в JAR:
import java.lang.instrument.Instrumentation;
public class ObjectSizeFetcher {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}
Добавляют следующее к Вашему MANIFEST.MF
:
Premain-Class: ObjectSizeFetcher
Использование getObjectSize:
public class C {
private int x;
private int y;
public static void main(String [] args) {
System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
}
}
Вызывают с:
java -javaagent:ObjectSizeFetcherAgent.jar C
#!/bin/bash
не превращает Ваш сценарий оболочки в исполняемый файл.
Это только удостоверяется, что будет интерпретироваться bash
, для которого Вы даете местоположение - как только Вы сделали его исполняемым файлом chmod u+x SCRIPTNAME
.
Позволяют мне объяснить снова : cadetkpgm.sh
не команда, , если Вы не сделали ее исполняемым файлом.