Est-il nécessaire de se déconnecter de la base de données une fois le travail effectué en Java? S'il n'est pas déconnecté, cela entraînera-t-il des fuites de mémoire?Dois-je me déconnecter explicitement d'une base de données lors de l'utilisation de Java?
Répondre
Vous devez fournir plus de détails, comme le framework que vous utilisez ou quelque chose.
De toute façon, utilisez-vous JDBC? Si c'est le cas, vous devez fermer les objets suivants en utilisant leurs méthodes close()
respectives: Statement, ResultSet et Connection.
Vous devez toujours fermer toutes vos connexions, déclarations et ensembles de résultats. Si ce n'est pas le cas, il est plus probable que vous ne puissiez pas obtenir de nouvelles connexions du pool qu'une fuite de mémoire.
Je n'ai pas de source, mais je crois (si je me souviens bien, cela fait longtemps que je n'ai pas touché JDBC) que cela dépend de l'implémentation du pilote JDBC. Vous devriez toujours fermer vos connexions et nettoyer après vous car tous les pilotes JDBC ne le font pas pour vous (bien que certains pourraient le faire).
Cela revient à une règle que j'aime suivre - Si je crée ou ouvre quelque chose, je suis responsable de la supprimer ou de le fermer.
En supposant que vous utilisez JDBC, la réponse est oui. Si vous ne fermez pas la connexion, le pilote JDBC peut essayer de la fermer dans un finalliseur, mais cela peut bloquer la connexion pendant une période très longue, entraînant des problèmes de ressources (la quantité de connexions à la base de données peut être ouverte à un le temps est fini). Typiquement, la programmation JDBC est faite avec un pool de base de données, et ne pas fermer la connexion signifie que le pool manquera de connexions disponibles très rapidement.
Certains serveurs d'applications (par exemple, JBoss) détectent lorsqu'une connexion n'est pas fermée et la ferment pour vous si elle gère les transactions, mais vous ne devez pas vous fier à cela.
Bien sûr, certains pilotes JDBC ne sont pas de purs pilotes Java, à quel point les fuites de mémoire deviennent une possibilité très réelle.
oui et oui
- 1. Base de données Java Poller?
- 2. Base de données Deadlocks lors de l'utilisation de Rownum?
- 3. l'application Déconnecter java de la console/fenêtre de commande
- 4. Comment me connecter à une base de données Access via un réseau local en utilisant Java?
- 5. Pourquoi ne puis-je pas déconnecter mes poignées de base de données avec DBD :: DB2?
- 6. Quels outils existent qui me permettent de vider et de recréer une base de données à partir de Java?
- 7. erreur lors de la suppression de la base de données
- 8. Persistance Java dans la base de données
- 9. Configurer des relations lors de l'importation de données de base?
- 10. Comment désinfecter l'entrée de la base de données en Java?
- 11. java insertion de la date dans la base de données
- 12. Projet de base de données VS 2008 manquant Noeud de références de base de données
- 13. de base de données
- 14. Mémoire de fuites de données de base?
- 15. Java + Tomcat, Connexion de base de données Mourir?
- 16. Formule dans une ligne de base de données - Java
- 17. Incorporation par programme de la base de données Java h2
- 18. Réplication de base de données
- 19. Base de données locale vs base de données basée sur le service lors de la création d'une application client WPF
- 20. Comment se déconnecter de Relying Party?
- 21. Comment me connecter à une base de données MySQL à partir de Clojure?
- 22. Ajout d'une image à une base de données en Java
- 23. Menus contextuels - Java ME
- 24. Animation en Java ME
- 25. Problème lors de la lecture des données nchar à partir de la base de données Oracle
- 26. base de données autonome
- 27. Erreur de base de données ASP.NET Access?
- 28. Base de données LINQ
- 29. Comment se déconnecter de plusieurs applications asp.net?
- 30. Base de données de conception de téléchargement de données question