Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 字符串消息是在System.out内部使用还是在Logger内部使用?_Java - Fatal编程技术网

Java 字符串消息是在System.out内部使用还是在Logger内部使用?

Java 字符串消息是在System.out内部使用还是在Logger内部使用?,java,Java,我有一个使用servlet创建的webapp,其中我有多个日志语句 假设LOG是使用适当的上下文和类详细信息初始化的logger类的静态变量,e是异常cuaght 乙二醇 简单地说,我的问题是字符串部分“这里有一些消息”在默认情况下是插入的。这样的语句会导致创建大量不同的字符串吗 用消息“some message here”创建一个最终的静态字符串会更有效吗?或者如果该字符串确实被视为interned,它会是相同的吗 简单地说,我的问题是字符串部分“这里有一些消息”在默认情况下是插入的 默认情况

我有一个使用servlet创建的webapp,其中我有多个日志语句

假设LOG是使用适当的上下文和类详细信息初始化的logger类的静态变量,e是异常cuaght

乙二醇

简单地说,我的问题是字符串部分“这里有一些消息”在默认情况下是插入的。这样的语句会导致创建大量不同的字符串吗

用消息“some message here”创建一个最终的静态字符串会更有效吗?或者如果该字符串确实被视为interned,它会是相同的吗

简单地说,我的问题是字符串部分“这里有一些消息”在默认情况下是插入的

默认情况下,所有字符串文字都被保留

这样的语句会导致创建大量不同的字符串吗

与字符串文字无关。连接将创建未被插入的新字符串

创建带有消息“somemessagehere”的最终静态字符串会更有效吗

没有

或者,如果该字符串确实被认为是被拘留的,情况会是一样的吗

对。它是实习的。没有“被认为是”关于它

是默认情况下插入的字符串部分“此处有消息”

这样的语句会导致创建大量不同的字符串吗


是:创建一个新字符串来连接文本和
e.toString()
;可能会创建其他新字符串来计算
e.toString()
,并计算
LOG.debug(…)

,所以我需要最终的静态方法,还是这样就可以了?我所说的最终静态方法是指。。。将文本字符串初始化为成员,而不是在doPost和doGet等中使用它。从这个答案可以立即看出,它没有任何区别。谢谢,这为我清除了它。我担心我可能会因为不必要地使用大量内存而陷入麻烦。如果您的日志级别设置高于调试,那么您可能会创建不必要的字符串。通常,除非您知道字符串将被记录,否则您应该避免连接字符串。我不知道您使用的是什么日志类,但大多数日志框架都会通过提供类似于
“这是我的消息:{0}”
的字符串来延迟连接。好的,还有其他选择吗?我知道文本部分将保持不变,但是如果异常消息不同,连接可能会创建新字符串。我无法避免打印异常,所以有没有办法缓解这个问题?@Kushan替代什么?没有问题要解决。您有一条新消息要记录:它被记录;它得到了GC'd.@EJP谢谢:)你的编辑清除了它。。。没有问题,只是它的工作方式
  LOG.debug("some message here "+e.toString());