본관은 청풍(淸風). 자는 자앙(子昻), 호는 만향(晩香). 김추(金樞)의 증손으로, 할아버지는 김흥진(金興進)이고, 아버지는 동지중추부사 김준(金埈)이며, 어머니는 소동헌(蘇東獻)의 딸이다.
윤증(尹拯)의 문하에서 수학하였는데, 말과 행동이 신중하고 침착하여 칭찬을 받았다.
1663년(현종 4) 진사가 되었고, 1671년 정시 문과에 병과로 급제하였다. 1684년 헌납으로서 최신(崔愼)의 탄핵을 받은 스승 윤증을 변호하였다. 1685년 사간이 되었고, 1687년 기사환국으로 삭탈관직되었다. 이후 벼슬에 뜻을 버리고, 시냇가에 작은 초당을 지어 ‘소일재(掃一齋)’라 명명하고, 독서에 몰두하였다. 1694년 갑술환국 후에 승지·병조참의 등을 지냈다.