jvm笔记-2

  1. jvm 1.6 类,类加载器和常量池用堆内存中的永久代实现
  2. 到了jvm 1.8 ,类,加载器和常量池被放入了元空间,元空间占用操作系统内存而不是堆内存
  3. cglib
  4. 常量池是储存指令的常量表,根据指令编号在常量池中查找,跳转指令
  5. 运行时常量池就是将指令编号加载到运行内存中
  6. 串池(stringtable),例如,string xx = “a”,a首先为常量池中的符号,还没有变成字符串对象,通过string指令后,会首先在stringtable中寻找是否有“a”,没有就声明这一对象并加载进入stringtable。string声明这一特性为懒惰性
//example
String s1 = "a";
String s2 = "b";
String s3 = "ab";
String s4 = s1+s2;
String s5 = "a"+"b";
//(s3==s4)? // false
//(s3==s5)? // true
// 首先==判断的是地址是否相同,s3声明后在串池中
// s4首先初始化一个stringbuilder对象,
// 再依次调用append,append,tostring方法,
//最后生成“ab”,因此两者的地址不同
// 对s5,java在编译期间优化,两个常量拼接结果不会变动了,一定是个常量,直接声明在串池中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值