一、什么式方法区 方法区,也称非堆(Non Heap),又是一个被线程共享的内存区域。其中主要存储加载的类字节码、class/method/field等元数据对象、static final常量、static变量、jit编译器编译后的代码等数据。另外,方法区包含了一个特殊的区域“运行时常量池”。 (1 ...
分类:
其他好文 时间:
2020-01-18 19:36:17
阅读次数:
89
Java虚拟机主要分为以下五个区: 一、方法区(METHOD AREA): 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数 ...
分类:
其他好文 时间:
2020-01-16 12:43:04
阅读次数:
90
https://www.cnblogs.com/iyangyuan/p/4631696.htm 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是jvm执行java代码所使用的栈。 方法区存放了一些常量、静态变量、 ...
分类:
编程语言 时间:
2020-01-16 10:58:22
阅读次数:
70
目录 "前言" "如何阅读class文件" "基本概念" "无符号数&表" "常量池" "魔数(magic number) & 版本号" "常量池" "访问标志" "类引索&父类引索&接口引索集合" "字段表集合" "方法表集合" "属性表集合" "Code属性" "使用javap解析class文件 ...
分类:
编程语言 时间:
2020-01-14 17:48:52
阅读次数:
112
1. a=a+b 和 a+=b的区别 +=会有隐式的强制转换,编译不会报错 但a=a+b,如果两个byte相加,会将加数提升到int,编译会报错 2. String不可变(immutable)的原因 a. JVM内存中的常量池:保存在编译期间被确定并且在.class文件中(磁盘文件)的数据,包含8种 ...
分类:
编程语言 时间:
2020-01-12 19:59:18
阅读次数:
82
第14章:享元模式 一、展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布 二、传统方案解决网站展现项目 直接复制 ...
分类:
其他好文 时间:
2020-01-11 00:03:03
阅读次数:
126
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(String Pool) 4. String类所用的连接符 5. String类的主要作用(简) 正文 ...
分类:
编程语言 时间:
2020-01-10 21:55:59
阅读次数:
102
目录 JVM 线程内存共享区 堆 heap (线程共享) 新生代的划分 Eden/FromSurvivor/To Survivor FromSurvivor To Survivor 新生代Minor GC 回收过程 老年代区域 清理算法:标记清除法 方法区、永久代(线程共享) 运行时常量池 线程内存 ...
分类:
其他好文 时间:
2020-01-09 18:57:51
阅读次数:
102
对象的创建 1. 类的校验、加载 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 2. 分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对 ...
分类:
其他好文 时间:
2020-01-09 14:48:00
阅读次数:
80
?. is和==的区别 1. id() 通过id()我们可以查看到?个变量表?的值在内存中的地址. ?数据池(常量池): 把我们使?过的值存储在?数据池中.供其他的变量使?. ?数据池给数字和字符串使?, 其他数据类型不存在. 对于数字: -5~256是会被加到?数据池中的. 每次使?都是同?个对象 ...
分类:
编程语言 时间:
2020-01-09 01:18:40
阅读次数:
130