본관은 광산(光山). 자는 경능(景能), 호는 돈촌(遯村). 충청도 연산(連山) 출신. 아버지는 판서 김익희(金益熙)이고, 김장생(金長生)의 증손이다. 학문적인 가정의 분위기에 젖어 학문이 일찍이 성숙하였으며 송시열(宋時烈)의 문하에서 수학하였다.
1663년(현종 4)에 사마시(司馬試)에 합격하여 이듬 해에 음보(蔭補)로 지중추부사(知中樞府事)에 올랐다. 1683년(숙종 9) 임피현령(臨陂縣令)으로 재직시, 대단하지 않은 일로 어사의 탄핵을 받아 임천(林川)으로 귀양갔다가 이듬 해에 풀려났다.
그 뒤 벼슬길을 사양하고 고향으로 돌아가 학문연구에 몰두하였다. 특히, 역사연구가 깊어 역대의 흥패와 인물의 잘되고 못된 것, 전장법도(典章法度)의 변혁, 산천의 험하고 평탄함, 관작제도 등을 소상하게 알았다.
유학의 경전은 송시열에게 수학하여 견해가 명쾌하고 관찰력이 투철하며, 일의 성패와 사람의 됨됨이를 많이 맞추었다. 김석주(金錫胄)와 김만기(金萬基)는 그를 신임하여 조정의 큰 일이나 기밀에 속하는 자문을 많이 받았다. 저서로는 『돈촌집(遯村集)』 3권이 있다. 시호는 문정(文貞)이다.