【问题标题】:How are java static variables maintained in JVMJVM中如何维护java静态变量
【发布时间】:2013-08-16 17:56:33
【问题描述】:

我有一个可供多个客户端同时登录的应用程序。我有一个正在使用的静态变量。我想检查使用静态变量是否安全。我在公共课上使用它。我希望它的行为方式是所有客户端都应该拥有自己的该变量的副本。此外,我正在使用 JBOSS 来托管应用程序。

谢谢

【问题讨论】:

  • 你可以在this问题中找到一些关于JVM如何处理静态变量的信息。

标签: java static jboss


【解决方案1】:

如果您想要一个变量的多个副本,请不要使用static

【讨论】:

  • 或者使用多个JVM。如果每个客户端都有自己的 JVM 运行代码,那么静态就可以了。如果服务器有这个代码并且所有客户端都与服务器通信,那么变量不需要是静态的,每个客户端都需要一个类的实例。
【解决方案2】:

静态变量存储在堆的一个特殊区域,称为“永久代”。请参阅此link 了解更多详情。

我有一个正在使用的静态变量。我想检查它是否安全 使用静态变量。

静态变量是类变量,无论您为该类创建的对象(实例)的数量如何,都只会创建变量的单个副本。所有实例共享相同的静态对象。所以在使用静态变量时请记住这一点。

【讨论】:

  • 我认为值得澄清的是,虽然静态变量存储在 permgen 中,但它特别是存储在那里的原语或引用。如果变量是对象引用,则对象本身存储在 permgen 之外。
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多