我的大型应用程序包含对大型代码的处理,其中也包括字符串文字。
作为代码清理activity的一部分,我将所有字符串文字声明为字符串final静态常量变量。
在此之后,我希望我的应用程序的性能有所改善。
我正在使用SLF4j进行日志记录。
我的问题是--日志中的字符串也应该声明为最终常量?
例如,用于logger.info(“我的日志”);
是否也会消耗堆内存空间?还是我应该让他们保持原样?
JVM有一个用于常量字符串的特殊内存分配:Java字符串池。有关详细信息,请参见https://www.baeldung.com/java-string-pool。
在您的示例中,如果有一个100logger.info(“...”)
语句使用相同的字符串,那么它将只在内存中存储一次。
在其他地方,将重复的字符串文字转换为最终的静态常量对于内存使用来说并不是必需的,但这可能会使其更易于维护。
问题内容: 我在python应用程序中使用标准的python日志记录模块: 问题是,尽管未启用调试级别,但在每次循环迭代时都会评估该愚蠢的日志消息,这会严重损害性能。 有什么解决办法吗? 在C ++中,我们提供了提供以下宏的软件包: 有效评估为 但是,由于Python(AFAIK)中没有宏,是否有一种有效的日志记录方法? 问题答案: 日志记录模块已经对您要执行的操作提供了部分支持。做这个: …代替
问题内容: 是否有充分的理由不在Java String中使用\ u0000作为分隔符?我自己会编码和解码字符串。 这是为了将用户输入的(我希望输入要输入的?)字符串列表保存到Eclipse首选项并读回。该列表可能是可变大小的,所以我认为我无法将每个项目保存为自己的首选项。 问题答案: 曾经有一些库将Java字符串错误地处理为以null结尾的库。我不知道这是否仍然正确,但值得记住这些事情。尤其是当您
使用代替字符串串联有什么好处吗? slf4j示例 我认为这是关于速度优化的,因为参数评估(和字符串级联)可以在运行时避免,这取决于配置文件。但只有两个参数是可能的,那么有时除了字符串串联没有其他选择。需要关于这个问题的意见。
我有以下代码: 在日志中,我只能看到来自BClass而不是AClass的字段: 17:52:28.151[main]INFO Main-Main. BClass(金额=12) 但是我想查看所有BClass字段,包括父类中的字段(标题字段)。我该怎么做?
我之前有一个关于相同代码的问题,但原因不同。我不想让这个问题变得太混乱。以下是参考链接:使用JOPtionPane遇到麻烦 我希望检查用户是否没有在showInputDialog中输入任何内容,或者显示一个备用消息,并将他们带回原始提示,或者只是循环通过同一个对话框,直到他们正常关闭它或通过输入一个数字继续。 下面是我试图检查空字符串的地方 末端试验段
null 最初,我试图通过更改中的文件来改变日志记录行为。不幸的是,这似乎没有什么作用,所以我现在的假设是,我正在创建的正在推翻文件中设置的规范。具体地说,的基于其他研究进行了更改。它正在尝试替换所有换行符。 日志文档 SLF4J文档 SLF4J手册 合并Logback和SLF4J 日志和SLF4J-structuredarguments 使用日志记录的JSON日志 将日志折叠-多行合并为一行 A