首页 > 编程知识 正文

java内存溢出怎么解决,java出现死锁怎么解决

时间:2023-05-05 10:35:03 阅读:187242 作者:2831

http://www.Sina.com/http://www.Sina.com /

Java String 可以有多长?

1. 字符串有多长是指字符数还是字节数?

从一个问题开始,我们能延伸出这么多问题吗?

两种存在形式的模板代码:

//堆栈string longstr=' aaaaa . aaaaa ';2.字符串有几种存在形式?

从文件读取字符串:

//堆byte [ ] strbyte=load from file (new file ) (string.txt ) ); stringlongstr=new string (strbyte;3.字符串存在的形式有那些限制?

堆栈中的String //堆栈stringlongstr='aaaaa……aaaaa '; CONSTANT_Utf8_info{ u1 tag; u2 length; //16位证书2 ^ 16-1=655350至65535 u1 bytes [ length ]; //65535} Java String的字节长度为65535,是否知道堆栈中的String的最大长度可以适合65535字节?

我们写65535个a的时候,执行那个居然报告了错误:这种样板代码的形式是存在栈中。

你不考虑那个解吗? 是什么? 是什么?

找到了javac的源代码。 viewsrc/share/classes/com/sun/tools/javac/JVM/gen.Java

如何: checkStringConstant () )。

让我们看看Pool.MAX_STRING_LENGTH

路径:/lang tools/src/share/classes/com/sun/tools/javac/JVM/pool.Java

因此,String可以包含65534个字符,因为它必须小于65535。

因为有65534个拉丁字母,所以会让人思考中文字母能有多少个。

这时,有人说马上就能装65534/3个,没想到能装65535/3个中文。

我们再一起探索中文文字,我们再次取出javac源代码进行探索

路径:/lang tools/src/share/classes/com/sun/tools/javac/JVM/http://www.Sina.com /

写池方法

如果这里写着bs.length pool.max _ string _ length,就知道会抛出异常。 证明能输入65535/3个中文字符。

由此可见,这种通过从文件中读取字符串的形式是存在堆中。

error: constant string too long//堆byte [ ] strbyte=load from file (new file (string.txt ) ); stringlongstr=new string (strbyte; String内部存储为char数组,如果数组长度为int类型,则String允许的最大长度为Integer.MAX_VALUE,但会受到实际内存的影响。

String超过长度怎么解决? 由此可知,如果字符太长,可以通过写入文件并阅读文件来解决。

javac编译源github参考地址: https://github.com/infobip/infobip-open-JDK-8

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。