Log4j最大字符串长度或Java字符串连接错误?
在Solaris 10上运行时,当我使用Apache Log4j记录器点击LOG.debug语句时遇到问题。以下代码块演示了基本场景:Log4j最大字符串长度或Java字符串连接错误?,java,string,log4j,solaris,Java,String,Log4j,Solaris,在Solaris 10上运行时,当我使用Apache Log4j记录器点击LOG.debug语句时遇到问题。以下代码块演示了基本场景: public class MyClass { private static final Logger LOG = Logger.getLogger(MyClass.class.getName()); private LinkedHashMap<String, String> myMap = new LinkedHash
public class MyClass {
private static final Logger LOG = Logger.getLogger(MyClass.class.getName());
private LinkedHashMap<String, String> myMap =
new LinkedHashMap<String, String>();
public static void main(String[] args) {
// A really long String, but certainly not exceeding 2^31 - 1 characters
//long
String reallyLongString = "A really, really, really...long String";
String key = "keyToReallyLongString";
// When this line is executed, Solaris instantly and completely logs me off
// of the system
LOG.debug("Adding to myMap[" + key + "]: " + reallyLongString);
}
}
公共类MyClass{
私有静态最终记录器LOG=Logger.getLogger(MyClass.class.getName());
私有LinkedHashMap myMap=
新建LinkedHashMap();
公共静态void main(字符串[]args){
//非常长的字符串,但肯定不超过2^31-1个字符
//长的
String reallyllongstring=“一个非常、非常、非常……长的字符串”;
String key=“keyToReallyLongString”;
//执行这一行时,Solaris会立即将我完全注销
//系统的
debug(“添加到myMap[“+key+”]:“+reallyLongString”);
}
}
有什么想法吗?如果您有任何类型的流程限制,您可能会遇到这些限制。通过进行字符串连接,您将至少使用
(reallyLongString.length()+key.length())*2个字节。如果这足以让您超越限制…如果您有任何类型的流程限制,您可能会遇到这些限制。通过进行字符串连接,您将至少使用(reallyLongString.length()+key.length())*2个字节。如果这足以让你超越极限……我很难相信你会被注销。进程崩溃了,当然,但是注销了?你将不得不提供一个实际失败的测试用例,而不是一个基本的场景……不幸的是,我无法在测试应用程序中复制它,也无法发布实际的代码。在其他情况下,我们有时也会看到这种行为,但这是唯一一次这种行为是一致的。奇怪,真的。。。我不知道是否值得再花时间在这上面。那一行调试输出不值得花这么多时间…我发现很难相信你会被注销。进程崩溃了,当然,但是注销了?你将不得不提供一个实际失败的测试用例,而不是一个基本的场景……不幸的是,我无法在测试应用程序中复制它,也无法发布实际的代码。在其他情况下,我们有时也会看到这种行为,但这是唯一一次这种行为是一致的。奇怪,真的。。。我不知道是否值得再花时间在这上面。这一行调试输出不值得花这么多时间…虽然我仍然不认为字符串长度是一个问题(考虑到您给出的计算,它大约是27000个字符),但我认为您已经掌握了一些东西。在进一步的调查中,我似乎只能在EclipseIDE中运行时复制这个问题。是否有您建议查看的特定内存设置?或者,是否有我不知道的Eclipse富客户端平台应用程序的特定设置?@Adam:恐怕没有……我从来没有看到过这个问题,只是想看看它是否有帮助。尽管我仍然不认为字符串长度是一个问题(考虑到你给出的计算,它大约是27000个字符),我想你知道了什么。在进一步的调查中,我似乎只能在EclipseIDE中运行时复制这个问题。是否有您建议查看的特定内存设置?或者,是否存在我不知道的特定于Eclipse富客户端平台应用程序的设置?@Adam:恐怕没有……我从未真正看到过这个问题,只是想看看它是否有帮助。