I'm not sure what you mean by "taking more memory", but it is definitely possible to find which one allocates more memory. This can be done both from inside the application and from outside.
Inside the application
private static final com.sun.management.ThreadMXBean threadMXBean =
(com.sun.management.ThreadMXBean) ManagementFactory.getThreadMXBean();
public void myAllocatingMethod() {
long before = threadMXBean.getThreadAllocatedBytes(Thread.currentThread().getId());
// ... some business logic that allocates memory ...
byte[] array = new byte[500000];
long after = threadMXBean.getThreadAllocatedBytes(Thread.currentThread().getId());
System.out.println("Method allocated " + (after - before) + " bytes");
}
Note: this counts memory allocated in the context of current thread. If a method spawns new threads or executes some code in a thread pool, it's not obvious how to account the allocated memory to a particular method.
Outside the application
Use allocation profilers like Java Mission Control.
P.S. Java Reflection has nothing to do with memory measurements.