khaled001
Messages postés156Date d'inscriptionmardi 19 août 2008StatutMembreDernière intervention 8 août 2016
-
9 avril 2012 à 20:13
Utilisateur anonyme -
10 avril 2012 à 23:02
Salut
Voila j'ai un programme tous simple pour utilisation de l'api rmi et j'ai besoin de prevoir le passge du ramasse miettes au bout de 10ms, ensuite 1ms avec affichage d'un message indiquant son passage
Comment faire ça svp ?
Voici mes classes :
HelloInterface.java
import java.rmi.*;
public interface HelloInterface extends Remote{
/*methode imprimant un message prédéfini dans l'objet appelé*/
public String sayHello() throws RemoteException;
}
HelloImpl.java
import java.rmi.*;
import java.rmi.server.*;
public class HelloImpl extends UnicastRemoteObject implements HelloInterface{
private String message;
/*Le constructeur*/
public HelloImpl(String s) throws RemoteException{
super();
// appelé automatiquement pour que l'OD puisse accepter les requetes
message = s;}
/*implementation de la méthode*/
public String sayHello() throws RemoteException{
return message;
}
}
HelloServer.java
import java.rmi.*;
public class HelloServer{
public static void main(String[] args){
try{
/*creer une instance de classe Hello et l'enregistrer dans le serveur de noms */
Naming.rebind("Hello1",new HelloImpl("Hello World!"));
System.out.println("Serveur pret:");
}catch (Exception e){
System.out.println("Erreur serveur:" +e);
}
}
}
HelloClient.java
import java.rmi.*;
public class HelloClient {
public static void main(String[] args){
try{
/*cherche reference objet distant*/
HelloInterface hello = (HelloInterface)Naming.lookup("rmi://localhost/Hello1");
/*appel de method a distance*/
System.out.println(hello.sayHello());
}catch (Exception e){
System.out.println("Erreur client:" +e);
}
}
}
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 10 avril 2012 à 08:33
Bonjour,
Tout comme Pylouq, je m'interroge vraiment sur l'intérêt cet exercice. Tu ne peux que détériorer les performances en gérant toi même le ramasse miettes.
Tu peux toujours l'appeler avec la méthode System.gc(); mais je te le déconseil
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 10 avril 2012 à 14:46
pareil sur l'utilité
Sinon, il déclenche entre 80 et 82% du heap occupé pour un passage full sauf si l'on modifie le paramètre MaxHeapFreeRatio ou un passage toutes les heures sauf si l'on modifie les paramètres sun.rmi.dgc.client.gcInterval & sun.rmi.dgc.server.gcInterval
Donc du coup en reprenant ce qui vient d'être dis, tu devrais calculer le taux d'occupation du tas (heap) en fonction des objets instanciés et voir si tu atteins ces fameux 80%... Tu pourrais nous donner moyen de voir le sujet stp ?
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)