【问题标题】:Java application object... where is it stored?Java 应用程序对象...它存储在哪里?
【发布时间】:2010-10-24 09:14:27
【问题描述】:

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

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

此外,任何其他关于可扩展性(包括大小和并发性)的问题都将不胜感激......

如果有人能指点我一些地方找到更多信息,我会很高兴...

非常感谢

【问题讨论】:

    标签: java servlets caching ehcache


    【解决方案1】:

    对象存储在堆中。堆空间可以通过虚拟机的配置文件来管理。

    构造函数调用更复杂 比普通的子程序或 函数调用。这有助于 了解确切的步骤 计算机通过执行 构造函数调用:

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

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

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

    这里是一些虚拟机配置参数

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

    我曾经为 xml 对象写了一个缓存(以某种方式调用它们)。带有字符串键(文件名)和对对象(解析的 xml 文件)的引用的 Map 就足够了。除此之外,缓存是一个单例(同步)。缓存已编译的 JasperReports 也是如此(我在这里遇到了明显的减速,因为不再每次都编译报告)

    【讨论】:

    • 所以,我想我应该对缓存大小设置一个限制,以免消耗所有服务器内存......我认为会话和应用程序将被序列化到磁盘,只是就像 php 对会话所做的那样
    • 会话被序列化到磁盘,如果需要的话。但不总是。关于缓存,如果地图没有变得非常庞大,则没有更大的问题,但是如果结合适当的替换策略以在出现冲突时使用,则限制它是一个好主意。
    • 冲突是什么意思?我已经用经典的 asp 的 Application 对象做了类似的事情,并为每个缓存的对象定义了依赖关系,因此如果需要,我可以使与某些依赖关系相关的每个项目无效(擦除)......我还设置了最大年龄缓存,大概一个小时……以防万一……
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2013-11-20
    • 2021-05-03
    • 1970-01-01
    • 2011-03-04
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多