I understand there are some tools like VisualVM, JConsole etc. to monitor the performance of J2EE apps. Could you please suggest which tool is best suitable to monitor the apps in Production environment i.e. secure enough. We would like to monitor GC Activities, Memory Usage, CPU Utilization etc.
VisualVM does everything JConcole does, and much more, so the latter is not much of an option. The first drawback is that it requires the JMX ports to be open, which may or may not be an issue for you. The bigger drawback is that it's a GUI tool, so it requires someone to spend time using it. Don't get me wrong, it's a great tool, but for continuous monitoring you need something automated. https://github.com/psi-probe/psi-probe is another tool I like for monitoring servlet containers (and which I use in production).
For automation you could create background jobs that use JMX to gather relevant data, and which trigger emails, SMS and/or other alerts as warranted.
BTW, J2EE is a VERY outdated name, it's been called JEE since version 5 came out in 2006 - 12 years ago!