Answer
Yes — an inactive session (one with no SQL currently executing) should be automatically terminated once its assigned Oracle Profile's IDLE_TIME value is reached; it only stays alive if it executes SQL again before that timeout, at which point it becomes active again and the idle clock resets. A persistently high inactive-session count that never clears isn't something to just tune around by adjusting IDLE_TIME or periodically killing sessions manually — it's usually a symptom of a real underlying problem, most commonly a connection-pooling bug in a middle-tier application that's opening and then abandoning/leaking connections instead of properly releasing them back to the pool. Finding and fixing whichever application or integration is leaking connections addresses the root cause, rather than just repeatedly cleaning up its symptoms.