2009-05-07 7 views
0

Je pense à utiliser l'objet application Java pour implémenter un cache simple, pour enregistrer quelques variables de configuration, et un couple de xml avec des informations souvent utilisées ...Objet d'application Java ... où est-il stocké?

Je voudrais savoir où est le données d'application stockées phisically (un fichier système, en mémoire, db), comment peut-il être configuré, et s'il y a toute sorte de limitation, comme espace, concurrence, etc ...

En outre, toute autre préoccupation concernant la scalabitlity (à la fois, en taille et en concurrence) serait apprécié ...

Et si quelqu'un peut me pointer quelque part pour trouver plus d'informations, je serai très heureux ...

merci beaucoup

Répondre

3

Les objets sont stockés dans le tas. Le segment espacé peut être géré via le fichier de configuration de la machine virtuelle.

Un appel du constructeur est plus compliquée que un sous-programme ordinaire ou appel de fonction. Il est utile de comprendre les étapes exactes que l'ordinateur passe par l'exécution d'un appel constructeur :

  1. Tout d'abord, l'ordinateur est un bloc de mémoire utilisé dans le tas, assez grand pour tenir un objet de le type spécifié .
  2. Il initialise les variables d'instance de l'objet. Si la déclaration d'une variable d'instance spécifie une valeur initiale, la valeur est calculée et stockée dans la variable d'instance . Sinon, la valeur initiale par défaut est utilisée.
  3. Les paramètres réels dans le constructeur, le cas échéant, sont évalués, et les valeurs sont affectées aux paramètres formels du constructeur.
  4. Les instructions dans le corps du constructeur, le cas échéant, sont exécutées.
  5. Une référence à l'objet est renvoyée en tant que valeur de l'appel du constructeur .

Le résultat final de ceci est que vous avez une référence à un nouveau objet construit. Vous pouvez utiliser cette référence pour obtenir les variables d'instance dans cet objet ou pour appeler ses méthodes d'instance.

http://www.faqs.org/docs/javap/c5/s2.html

Voici quelques-uns des paramètres de configuration VM

http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp

J'ai écrit un cache pour les objets XML (pour les appeler en quelque sorte). Une carte avec une clé de chaîne (nom de fichier) et une référence à l'objet (fichier xml analysé) suffisent. En plus de cela, le cache était un singleton (synchronisé).Est-ce la même chose pour la mise en cache compilée JasperReports (j'ai une bosse de vitesse notable ici, car les rapports ne sont plus compilés à chaque fois)

+0

Donc, je devrais définir une limite sur la taille du cache, je suppose, afin de ne pas consommer tous la mémoire du serveur ... Je pensais que la session et l'application seraient sérialisées sur le disque, tout comme php avec la session – opensas

+2

est sérialisée sur disque, si nécessaire. Mais pas toujours. À propos du cache, si la carte ne devient pas astronomique, il n'y a pas de problèmes plus importants, mais la limiter est une bonne idée, si elle est combinée avec une politique de remplacement appropriée à utiliser en cas de conflit. – Tom

+0

que voulez-vous dire par conflits? J'ai fait une chose similaire avec l'objet Application d'asp classic, et défini des dépendances pour chaque objet mis en cache, de sorte que si nécessaire, je peux invalider (effacer) chaque élément lié à une dépendance ... J'ai également défini un âge maximum cache, quelque chose comme une heure ... juste au cas où ... – opensas

Questions connexes