Have a seperate actionListener where you will explicitly make datalist as null.
public void actionListener(javax.faces.event.ActionEvent event) {
datalist=null;
}
And now your commandlink should be
<p:commandLink action="#{showMB.getRecordList}"
actionListener="#{showMB.actionListener}" update="recordsInfo"
action="#{showMB.recordList}" ajax="true">
<h:graphicImage library="images" name="show.jpg" title="Refresh"/>
</p:commandLink>
ActionListener is executed first before action So you will have datalist set to null before action method execution.
But ideally you have to use actionListener only when the event source component instance is needed in backend raised.
Hope this helps.