Chamar JDialog

Qual é o melhor método de se chamar um JDialog a partir de uma JFrame?

Também tem como limpar o JDialog da memória depois de fechar ele?

No evento do seu botão faça:

//Normalmente aqui vc instancia sua dialog, que é um filho de JDialog JDialog dialog = new JDialog(); dialog.setModal(true); dialog.setVisible(true); //Chama a dialog dialog = null; //Deixa o garbage collector agir

Dentro do código da sua dialog, haverá algo assim na hora de fechar a dialog:

Isso garante que a dialog irá liberar eventuais recursos alocados no sistema de janelas.

// declare uma variavel do tipo javax.swing.JDialog
private javax.swing.JDialog frmlocal;

 private void mnucadcliActionPerformed(java.awt.event.ActionEvent evt) {                                          

    //ajuste a sua variavel para ela ser um novo JDialog como vc desenhou
    frmlocal = new frmcadcli(this,false);
    //coloca no meio da tela 
    frmlocal.setLocationRelativeTo(null);
    frmlocal.setVisible(true); 
    frmlocal.setModal(true);
}