안드로이드의 Activity Life Cycle에 대해서 궁금한 것이 있습니다.

다음과 같이 코드를 만들었습니다.

public class Test_Main extends ListActivity implements OnClickListener{
public Test_Main(){
Log.i("Test", "SRC_Main");
}
public void finalize(){
Log.i("Test", "finalize");
}
public void onCreate(Bundle savedInstanceState) {
Log.i("Test", "onCreate");
}
protected void onStart() {
Log.i("Test", "onStart");
}
protected void onDestroy() {
Log.i("Test", "onDestroy");
}
protected void onStop() {
Log.i("Test", "onStop");
}
}

이와 같이 코드를 구성하고 Activity가 실행이 될때 나오는 Log를 출력해보면

TestMain -> onCreate -> onStart
와 같이 출력 됩니다.
그래서 Back Key를 눌러 Activity를 종료하면
onStop -> onDestroy
와 같이 출력이 됩니다.

그리고 다시 Activity를 실행하면
TestMain -> onCreate -> onStart
와 같이 처음 실행했을때의 루틴 그대로 출력이 됩니다.
마찬가지로 Back Key를 눌러 Acitivty를 종료하면
onStop -> onDestroy
와 같이 출력이 됩니다.

이와 같은 동작을 몇번 수행하다보면, 
finalize
가 출력이 됩니다.(생성된 횟수만큼 출력됩니다.)

여기서 궁금한 것은 Activity life cycle을 보면, OS 상황에 따라 Memory에 Activity가 남아 있다가 동일한 activity가 호출되면, onRestart()를 거쳐서 재사용이 된다고 하던데, 제가 Test한 결과 재사용이 전혀 이루어지지 않고 있습니다.
혹시 재사용을 하기 Memory에 적재된 Activity를 재사용 하기 위한 방법이 있나요?

제가 이와같이 Test한 이유는 생성 부에 DB 연결을 해놓고 Activity가 실행 중이거나 Memory에 적재되어 있는 경우, DB 접속으로 인한 수행 시간 delay를 최소화 하고자 하고 싶습니다.
이렇게 코딩을 해보니, DB 연결로 인해 소요되는 Delay 뿐만 아니라, DB 연결 개수가 늘어나는 문제가 있어서 나중에는 DB Connection full 오류가 발생하더라구요.

답변 부탁 드립니다.


===================================
Test 방법에 대해서 다시 정리하여 질문을 드립니다.

back Key를 언급했던 것은 Test 방법에 대해서 간단히 설명하기 위함이고요.
제가 Test했던 방법은
생성자에서 DB와 연결을 합니다.
onCreate에서 연결된 DB에서 Data를 가져와서 List에 뿌립니다.
그리고, finalize()에서 DB 연결을 해제합니다.

이때 Manifest.xml에서 android:screenOrientation="portrait"를 설정하지 않았기 때문에 Phone을 가로로 눕히거나, 세로로 세우는 것에 따라서 화면이 변경이 됩니다.
그런데, 화면이 변경될때마다 제 예상으로는 onRestart() 또는 onStart()가 호출될 것으로 예상을 하였는데, 실제로는 생성자 부터 onCreate() -> onStart()를 거치게 됩니다.
이로 인해 Phone을 눕히거나, 세우게 되면, 계속 DB 연결이 이루어져서 언제가는 Connection full이 되어서 Data를 가져오지 못하는 문제가 발생을 합니다.
그래서 이에 대해서 해결할  수 있는 방법을 찾고 있었던 것 입니다.