Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中变量值何时消失或删除_Java_Jsp_Servlets_Jakarta Ee_Scope - Fatal编程技术网

Java中变量值何时消失或删除

Java中变量值何时消失或删除,java,jsp,servlets,jakarta-ee,scope,Java,Jsp,Servlets,Jakarta Ee,Scope,我想我已经知道变量什么时候有值了。 但是当我在另一个浏览器中打开变量时,它已经有了一个值,这让我很惊讶。 我猜这个值仍然存在于web服务器中。我在想,当我打开它到另一个浏览器,甚至到另一台计算机,它将有自己的变量位于内存中 我在Servlets中的全局作用域中第一次出现时将变量声明为null List<RecordsInfo> recordsInfo = null; //with getter and setter; download.jsp(JSTL) 点击下载。 我知道我可

我想我已经知道变量什么时候有值了。 但是当我在另一个浏览器中打开变量时,它已经有了一个值,这让我很惊讶。 我猜这个值仍然存在于web服务器中。我在想,当我打开它到另一个浏览器,甚至到另一台计算机,它将有自己的变量位于内存中

我在Servlets中的全局作用域中第一次出现时将变量声明为null

List<RecordsInfo> recordsInfo = null;

//with getter and setter;
download.jsp(JSTL)

点击下载。
我知道我可以在初始化recordsInfo后获得它的值,所以我在exportToExcel中使用了它。但我的问题是其他使用相同函数的浏览器得到相同的结果,我认为它是空的,因为它有不同的会话

虽然我已经有计划来解决这个问题,但我只想从专家那里得到一些建议

我的问题是变量何时死亡(当Java垃圾收集器处理它时) 声明每个会话唯一的变量的最佳实践是什么。 我希望我把问题说清楚。我将感谢任何帮助。谢谢

我在Servlets中的全局作用域中第一次出现时将变量声明为null

List<RecordsInfo> recordsInfo = null;

//with getter and setter;
Servlet在第一次被请求时加载到内存中一次

现在,对于每个请求,将调用其服务方法。但是您在全局范围中有
recordsInfo
,因此在类装入器重新加载servlet之前,它将为所有会话/请求共享

因此,对于您的场景,您可以将
recordsInfo
设置为会话属性,因为不同的
session
需要不同的属性,而
请求需要缓存该属性

更新您的新问题:


Servlet将在哪个内存中加载,是否在web服务器中

内存将是您机器的内存,特别是运行服务器的jvm的堆内存


是的,如果太大而无法缓存,请不要

Servlet将在哪个内存中加载,它是否在web服务器中?根据您的回答,我认为是web服务器,我只想确定:)。关于类加载器,我对它不是很熟悉,而且我还是java新手,因为它可以替代会话。关于课程,我认为这是一个比我计划做的更好的选择。但我尽可能不想在我的会话中放置大对象。有一种可能性,我可以得到大约十万或一百万的记录。再次感谢您,现在我将尝试使用session。将答案添加到您较新的Q中。相关:
Click <a href="${filePath}">here</a> to download.