Java应用程序对象...它存储在哪里?

时间:2009-05-07 03:38:04

标签: java servlets caching ehcache

我正在考虑使用java应用程序对象来实现一个简单的缓存,保存一些配置变量,以及一些带有常用信息的xml ...

我想知道应用程序数据在哪里存储(系统文件,在内存中,db),如何配置,以及是否有任何类型的限制,如空间,并发等...

此外,关于scalabitlity(包括大小和并发)的任何其他问题都将受到赞赏...

如果有人可以给我一些地方寻找更多信息,我会很高兴...

非常感谢

1 个答案:

答案 0 :(得分:3)

对象存储在堆中。间隔堆可以通过VM的配置文件进行管理。

  

构造函数调用更复杂   比普通的子程序或   功能调用。这对你很有帮助   了解确切的步骤   计算机通过执行一个   构造函数调用:

     
      
  1. 首先,计算机获取堆中未使用的内存块,大   足以容纳一个对象   指定类型。
  2.   
  3. 初始化对象的实例变量。如果   声明实例变量   指定一个初始值,然后指定   值被计算并存储在   实例变量。否则,   使用默认初始值。
  4.   
  5. 评估构造函数中的实际参数(如果有),   并将值分配给   构造函数的形式参数。
  6.   
  7. 执行构造函数体中的语句(如果有)。
  8.   
  9. 返回对象的引用作为的值   构造函数调用。
  10.         

    这样做的最终结果就是你   有一个新的参考   构造对象。你可以用它   参考获取实例   该对象中的变量或调用   它的实例方法。

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

以下是一些VM配置参数

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

我曾经为xml对象写过一个Cache(以某种方式调用它们)。带有String键(filename)的Map和对Object(已解析的xml文件)的引用就足够了。除此之外,缓存是单例(同步)。对于缓存已编译的JasperReports也是一样的(我在这里得到了显着的速度提升,因为报告不再每次都编译)