当前位置: 首页 > 面试题库 >

在Java中,程序之间共享静态类成员吗?

商璞
2023-03-14
问题内容

我想不,不是,因为每个进程当然都有自己的内存空间。

但是整个JVM实际如何工作?我启动的每个Java程序在单独的进程中是否都有单独的JVM?系统中运行的Java程序是否共享任何东西?操作系统和JVM实现之间有区别吗?是否可以
使 程序共享变量(即直接通过JVM而不是通常的IPC机制)?是否有更多特殊用途的单进程JVM?

通常,关于JVM胆量的推荐读物是什么?该规范?一些实现的源代码?网站?图书?


问题答案:

在Java中,程序之间共享静态类成员吗?

一个类由其全名和加载该类的类加载器定义。如果同一类位于同一JVM进程内,并且两个程序通过同一类加载器加载了该类,则将共享静态成员。类加载规则极为重要。

我想不,不是,因为每个进程当然都有自己的内存空间。

如果您使用两个单独的JVM启动两个应用程序,那么您是正确的。但是以诸如tomcat之类的应用程序/
servlet容器为例:它们通过同一进程(tomcat主机进程)加载多个应用程序。

但是整个JVM实际如何工作?我启动的每个Java程序在单独的进程中是否都有单独的JVM?系统中运行的Java程序是否共享任何东西?

每次>java -cp...在命令行上键入时,都在创建一个新进程。请记住,当您运行eclipse或调用ant
java任务时,fork=true您也在创建新进程。

操作系统和JVM实现之间有区别吗?是否可以使程序共享变量(即直接通过JVM而不是通常的IPC机制)?是否有更多特殊用途的单进程JVM?

就像海报上所说的那样,有Terracota之类的项目可以为您提供便利。这种共享的一般方法是分布式缓存。



 类似资料:
  • 问题内容: 我的高级Java课堂上有关线程的老师说了一些我不确定的东西。以下代码不一定会更新ready变量。根据他的说法,这两个线程不一定共享静态变量,特别是在每个线程(主线程与)在其自己的处理器上运行并且因此不共享相同的寄存器/缓存/等和一个CPU的情况下。不会更新其他。 从本质上讲,他说有可能在主线程中进行更新,而不是在中进行更新,因此将无限循环。 他还声称该程序可以打印或打印。我了解如何打印

  • 我有一个Maven项目,其中有一个parent-pom项目和3个maven-module项目。其中2个模块是编译成WAR文件的Java-EE web应用程序。其中1个模块包含公共JAVA代码,这些代码在其他2个项目之间共享。共享JAVA代码很容易。 我的问题是如何共享常见的静态资源,如JavaScript、CSS和图像文件,而不在每个web模块中重复它们?我还希望这样做:我可以继续从Eclipse

  • 问题内容: 我只想在进程与该进程调用的dll之间共享静态/全局变量。exe和dll在相同的内存地址空间中。我不希望在其他进程之间共享该变量。 问题的阐述: 说是有一个静态/全局变量在。exe 和dll 都具有,因此变量都在两个图像中。 现在,动态加载(或静态)。然后,问题是该变量是否由exe和dll共享。 在Windows中,这两个家伙 永远不会 共享:exe和dll将具有的单独副本。但是,在Li

  • 我有一个Flask应用程序在Gunicorn下运行,使用同步工作进程类型和20个工作进程。该应用程序在启动时读取大量数据,这需要时间和内存。更糟糕的是,每个进程都加载自己的副本,这会导致它花费更长的时间,占用20倍的内存。数据是静态的,不会更改。我想加载一次,让所有20名员工共享。 如果我使用设置,它只加载在一个线程中,并且最初只需要1X内存,但是一旦请求开始进来,它似乎会变成20X。我需要快速随

  • 本文向大家介绍静态库和共享库之间的区别,包括了静态库和共享库之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程上下文库中是一种具有某种代码的东西,这些代码已经过预编译,可以在任何程序中重新使用以实现某些特定功能或特性。 现在,根据该代码库的执行和存储,将其分为两种类型,即静态库和共享库。 以下是静态库和共享库之间的重要区别。 序号 要点 静态库 共享库 1 定义 静态库是一个库,其中执行文

  • 问题内容: 我有一些用Java编写的代码。对于新课程,我计划在Scala中编写。我在访问基类的受保护静态成员时遇到问题。这是示例代码: Java代码: 标量代码: 有什么建议吗?我如何在不修改现有基类的情况下解决这个问题 问题答案: 这在Scala中是不可能的。由于Scala没有记号,您不能访问父类的成员。这是一个已知的限制。 解决方法是执行以下操作: 现在,您可以改为从这个新类继承,并通过get