当我们说实习字符串存储在永久生成区域时,那么同样适用于字符串文字吗?或者它只适用于由inter()实现的字符串?
实际上博客文章通常说字符串池包含对字符串对象的引用,而实际字符串对象在堆中的某处.还有很多混乱,永久世代是IN堆还是外堆.(我使用jcosole它显示永久性不同于heap.many帖子说它作为堆的一部分,许多人说它是不同的)
编辑: 当我跑的时候:
public class stringtest2{
public static void main(String args[]){
int i=0;
List<String> list=new ArrayList<String>();
while(true){
String s="hello"+i;
String s1=i+"hello";
String s2=i+"hello"+i;
System.out.println(s);
s.intern();
s1.intern();
s2.intern();
list.add(s);
list.add(s1);
list.add(s2);
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期待Java.lang.OutOfMemoryError: PermGen space但是我得到了:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at stringtest2.main(stringtest2.java:20)
Run Code Online (Sandbox Code Playgroud)
不应该 Java.lang.OutOfMemoryError: PermGen space
我在问我的问题时问这个问题:
Spring singleton在参考手册中定义为每个bean的容器.
每个容器意味着如果我们喜欢:
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); //myBean is of singleton scope.
MyBean myobj1=(MyBean)context.getBean("myBean");
Run Code Online (Sandbox Code Playgroud)
beans.xml中:
<bean id="myBean" class="MyBean"/>
Run Code Online (Sandbox Code Playgroud)
然后myobj==myobj1会出现真实的.都指向同一个实例.
对于每个bean每个bean的每个部分短语,我有点困惑.对于每个豆子,我是否正确:
如果我们喜欢
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean");
MyBean myobj1=(MyBean)context.getBean("mySecondBean");
Run Code Online (Sandbox Code Playgroud)
beans.xml中:
<bean id="myBean" class="MyBean"/>
<bean id="mySecondBean" class="MyBean"/>
Run Code Online (Sandbox Code Playgroud)
然后myobj==myobj1会出现虚假.那意味着它们是两个不同的实例?
我必须托管使用JSP,Java 6,Spring 3,Hibernate 3,mySql,Tomcat 6 构建的Web应用程序.
我是新来的托管网络应用程序并有一些疑问: -
任何人都可以指导我,特别是从Spring和Hibernate的角度来看?
托管/运行Hibernate&Spring应用程序时出现的问题是什么?
任何提供Java托管的主机是否也会为Spring和Hibernate提供支持?
根据JLS(15.28常量表达式)表达式仅包含:
i)Literals of primitive type and literals of type String (§3.10.1, §3.10.2, §3.10.3,
§3.10.4, §3.10.5)
or
ii)Simple names (§6.5.6.1) that refer to constant variables (§4.12.4).
or
iii)...
Run Code Online (Sandbox Code Playgroud)
是一个不变的表达.
现在String s1="a"+"b";是一个常量表达式,将"ab"在编译时进行求值.
所以 s1="ab";
[1] 我正确地说,现在根据上述声明,字符串池中有三个对象: - "a","b","ab"???
现在,
final String s="a";
final String s1="b";
String s2=s+s1; // is also constant expression and get evaluated at compile time.
Run Code Online (Sandbox Code Playgroud)
上面的代码将s2="a"+"b";在编译后转换为.
因此s2="ab";将自动存储在字符串池中.
但,
// note there is no final now.
String s="a";
String s1="b";
String s2="a"+"b"; …Run Code Online (Sandbox Code Playgroud) 枚举被认为是单身人士的最佳方式,其中一个原因是它隐含地继承了Serializable.
但是enums如何防止单身人员的反序列化问题?
如何HttpServletResponse object在我的spring控制器中获取方法,以便我的应用程序与Http API保持松散耦合?
谢谢...
编辑:其实我想要的是在我的控制器中设置HttpServletResponse对象的ContentType.春天为此提供了任何方式,而没有将HttpServletResponse对象作为控制器方法中的参数?
volatile keyword在java4和java5之后使用有什么区别?
与此相关,
非原子变量(long/double)的读/写操作在声明为volatile时是原子的.
这对java4也是如此,或者从java5开始有效吗?
我正在使用MySQL 中的SQL 限制db.Records来实现分页,需要得到
从最后一行向后检索。表中有几千条记录
我想一次检索 500 条记录以显示在页面中。
SELECT * FROM tbl_name ORDER BY some_col DESC
Run Code Online (Sandbox Code Playgroud)
将检索所有记录。
但我不想要所有记录,因为它们的数量有数千个。
如果我使用
SELECT * FROM tbl_name ORDER BY some_col DESC LIMIT 500
Run Code Online (Sandbox Code Playgroud)
它将按降序返回最后 500 条记录。
但我找不到从第一个块剩下的点开始反向检索下一个 500 块的方法。
Spring通过JavaMail Api提供抽象。
有许多示例描述如何使用Spring电子邮件抽象层发送邮件。
但是我该如何阅读电子邮件?
在第183和186行的com.sun.org.apache.xerces.internal.impl.XMLScanner的源代码中
183 protected final static String fVersionSymbol = "version".intern();
186 protected final static String fEncodingSymbol = "encoding".intern();
Run Code Online (Sandbox Code Playgroud)
为什么"版本"和"编码"通过使用intern()显式实现,而它们是字符串文字并且会自动实现内部连接?
java ×8
spring ×3
string ×2
content-type ×1
email ×1
enums ×1
hibernate ×1
jakarta-mail ×1
mysql ×1
pagination ×1
singleton ×1
spring-mvc ×1
sql ×1
web-hosting ×1