一、String在内存中的结构 注意:String类声明的变量名放在栈中,New出来的对象放在堆中,String具体常量类容放在常量池 二、String是不可变对象 java.lang.String类使用了final修饰,不能被继承。String是常量,其对象一旦构造就不能再被改变 三、创建对象个数 ...
分类:
编程语言 时间:
2018-06-11 00:37:34
阅读次数:
194
Java虚拟机运行时会把内存划分为如下数据区域: 1.程序计数器:可以看作是当前程序执行字节码的行号指示器,任何时候,一个处理器只会执行一条线程命令,所以每个线程都有一个独立的程序计数器。 2.虚拟机栈:也是线程私有的,生命周期与线程相同。每个方法运行时都会创建一个栈帧用于存储局部变量表、操作数栈、 ...
分类:
其他好文 时间:
2018-06-10 15:16:15
阅读次数:
164
深入理解java虚拟机 精华总结(面试)(转) 一、运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二、 hotspot虚拟机对象 4 2.1 对象的创建 4 检查 4 分配内存 ...
分类:
编程语言 时间:
2018-06-10 00:28:57
阅读次数:
219
一,is和==的区别 1,id :通过id我们可以查看到一个变量表示的值在内存中的地址 用id()表示,括号里面放的是想要查看地址的变量 字符串的数据地址是一样的,列表的数据地址是不一样的 在python中,命令行代码和py文件中的代码运行的效果可能是不一样的 小数据池(常量池):把我们使用过的值存 ...
分类:
其他好文 时间:
2018-06-09 23:11:59
阅读次数:
157
一、Java 虚拟机内存原型 寄存器:我们在程序中无法控制。 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。 堆:存放用 new 产生的数据。 静态域:存放在对象中用 static 定义的静态成员。 常量池:存放常量。 非 RAM 存储:硬盘等永久存储空间。 二、常量池 ...
分类:
编程语言 时间:
2018-06-07 21:52:54
阅读次数:
171
jvm_string常量池 1.设计思想 *目的提高性能 *池中对象一直有引用,不会被垃圾回收 2.存放位置 *存放在方法区 *对于基础类型变量和常量。变量和引用存储在栈中,常量存储在常量池中 参考文档:1.https://segmentfault.com/a/1190000009888357 ...
分类:
其他好文 时间:
2018-05-28 16:15:29
阅读次数:
111
每一个class字节码文件都唯一对应一个类或接口,class文件中记录中类或接口的基本信息,但反之不成立,不是每一个类或接口都有一个唯一对应的字节码文件,首先类或接口的字节码可以不以文件的方式存储,可以直接从内存中生成字节码,而不产生.class文件,动态代理的原理就是直接内存中生成字节码流,根据加 ...
分类:
编程语言 时间:
2018-05-27 23:37:53
阅读次数:
242
关键时刻,第一时间送达! 目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布。本文介绍 Java 11 的新功能。 根据Oracle新出台的每6个月发布一次Java SE的节奏,Java 11将于2018年9月发布,迄今为止Oracle ...
分类:
编程语言 时间:
2018-05-26 19:36:42
阅读次数:
175
Java Web程序由于引入大量第三方java类库,在启动时经常会遇到内存溢出(Memory Overflow)或者内存泄漏(Memory leak)问题,导致程序启动失败。 一、OOM异常分类: OOM异常主要分为java堆溢出、虚拟机栈和本地方法栈溢出、方法区和运行时常量池溢出、本地直接内存溢出 ...
分类:
其他好文 时间:
2018-05-23 23:34:56
阅读次数:
216
Java 8 彻底将永久代 (PermGen) 移除出了 HotSpot JVM,将其原有的数据迁移至 Java Heap 或 Metaspace 为什么取消了永久代而用MetaSpace代替了永久代? 在 HotSpot JVM 中,永久代中用于存放类和方法的元数据以及常量池,比如Class和Me ...
分类:
编程语言 时间:
2018-05-23 02:02:39
阅读次数:
220