Любой код для бенчмаркинга будет менее эффективен, чем код без бенчмаркинга, просто потому, что у него будет больше работы.Тем не менее, Java, в частности, вызывает проблемы, о которых говорится в статье, из-за того, что сборка мусора происходит всякий раз, когда jre чувствует, что это так.Даже документация для System.gc говорит, что это «лучшее усилие».
Что касается ваших конкретных вопросов:
System.gc не должен занимать больше памяти, но это займет процессорресурсы.
Это возможно в зависимости от того, что вы пытаетесь сравнить.Всегда будут помехи.Если вы хотите выйти за пределы своего кода, есть такие инструменты, как VisualVM, для отслеживания использования памяти извне вашего приложения.
Редактировать: Исправлено формулировку, содержащуюся в документации System.gc.