Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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_Multithreading_Memory - Fatal编程技术网

Java 线程本地和内存使用

Java 线程本地和内存使用,java,multithreading,memory,Java,Multithreading,Memory,创建ThreadLocal是为了以线程安全的方式操作对象的单独副本 这意味着进程中的对象数量将随着线程数量的增加而增加。 这是因为,每个线程都将创建自己的ThreadLocals副本 它不会增加进程的内存需求吗? 您似乎暗示是ThreadLocals增加了内存使用,但实际上您的问题与ThreadLocals本身并没有特别的关系。在您描述的情况下,它们只是在某个点分配的某个对象,当线程最晚死亡时,这些对象将不可检查 进程在java中的作用取决于: 物体 班级 线程 本机数据结构 本机代码 与每个项

创建ThreadLocal是为了以线程安全的方式操作对象的单独副本

这意味着进程中的对象数量将随着线程数量的增加而增加。 这是因为,每个线程都将创建自己的ThreadLocals副本

它不会增加进程的内存需求吗?
您似乎暗示是ThreadLocals增加了内存使用,但实际上您的问题与ThreadLocals本身并没有特别的关系。在您描述的情况下,它们只是在某个点分配的某个对象,当线程最晚死亡时,这些对象将不可检查

进程在java中的作用取决于:

物体 班级 线程 本机数据结构 本机代码 与每个项目相关的内存消耗因应用程序、运行时环境和平台而异。那么如何计算总内存呢?嗯,要得到准确的数字并不是那么容易,因为你几乎无法控制本地部分。唯一可以真正控制的部分是heap-Xmx、class-XX:MaxPermSize和thread stack-Xss消耗的内存量,它们控制每个线程占用的内存量。调整堆栈大小时要小心,因为太小的大小会导致堆栈溢出异常,并且应用程序无法正常工作。所以公式是:

(-Xmx) + (-XX:MaxPermSize) + numberofthreads * (-Xss) + Other mem
因此,很明显,进程占用的内存量会随着线程数量的增加而增加。
您的问题似乎不是关于线程局部变量,而是关于一般线程。

确实如此。当线程终止时,对象将消失。。。。当然,更多的物体意味着更多的记忆;这是不言而喻的。这个问题似乎离题了,因为它只是要求确认证据。