В общем, класс должен быть разработан, чтобы делать что-то одно и делать это хорошо. Теперь, с вашим примером класса Math, он может действовать как фасад для отдельных реализаций. Или это может быть разделено на иерархию:
public abstract class Math
{
abstract Solve(IMathPayload);
abstract CanSolve(IMathPayload);
}
public class LinearMath : Math {}
public class DifferentialEquasionMath: Math {}
Может быть, VisualVM может помочь (у меня еще не было возможности попробовать). Ссылка:
http://java.sun.com/javase/6/docs/technotes/guides/visualvm/coredumps.html
Вы уверены дамп ядра - это то, что вы хотите здесь? Это будет содержать необработанные внутренности работающей JVM, а не информацию на уровне Java. Возможно, вам нужен дамп кучи JVM.
IBM предоставляет ряд инструментов, которые также можно использовать на sun jvm. Взгляните на некоторые проекты на alphaworks, они предоставляют анализаторы дампа кучи и потоков
Карл
Я рекомендую вам попробовать Netbeans Profiler . Он имеет богатый набор инструментов для анализа в реальном времени. Для автономного анализа стоит попробовать инструменты от IbM
Хорошо, если вы создали дамп ядра с помощью gcore или gdb, вам нужно преобразовать его в файл, называемый HPROF . Их можно использовать в VisualVM, Netbeans или Eclipse Memory Analyzer Tool (ранее - SAP Memory Analyzer). Я бы порекомендовал Eclipse MAT.
Для преобразования файла используйте инструмент командной строки jmap .
# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234
где:
dump.hprof - это имя файла hprof, который вы хотите create
/ usr / bin / java - это путь к версии двоичного файла java, которая сгенерировала дамп ядра.
core.1234 - это ваш обычный файл ядра.
Actually, VisualVM can process application core dump.
Just invoke "File/Add VM Coredump" and will add a new application in the application explorer. You can then take thread dump or heap dump of that JVM.
Попробуйте анализатор стека lady4j, он может вам помочь:
jhat - один из лучших, что я использовал до сих пор. Чтобы сделать дамп ядра, я думаю, вам лучше использовать jmap и jps вместо gcore (я не использовал его). Проверьте ссылку, чтобы узнать, как использовать jhat . http://www.lshift.net/blog/2006/03/08/java-memory-profiling-with-jmap-and-jhat