1:jvm遇到new :首先判断是否别类加载器加载,然后class 加载到 jvm内存数据区 类加载 检查加载:检查这个指令参数是否可以在常量池中有对应类的符号引用,并检查是否被加载/解析/初始化 分配内存 -》指针碰撞 (适合内存规整)/ 空闲列表(适合内存不规整) 并发情况下 cas加失败重试/ ...
分类:
其他好文 时间:
2020-07-23 15:53:57
阅读次数:
68
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。 对于基本类型来说,==是进行数值的比较。对于引用类型来说,==是进行【地址值】的比较。 1 public class Demo02StringPool { 2 3 public static void main(String[] a ...
分类:
编程语言 时间:
2020-07-21 22:55:43
阅读次数:
85
方法区概述 栈堆方法区间的交互关系 方法区的基本理解 Hotspot 中方法区的演进 设置方法区大小的参数 OOM PermGen 和 OOM Metaspace 举例 方法区的内部结构 class 文件中常量池的理解 运行时常量池的理解 图示举例方法区的使用 方法区在 jdk6 、 jdk7 、 ...
分类:
其他好文 时间:
2020-07-16 21:19:58
阅读次数:
84
简介 JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。 class文件中的常量池 之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢? 字符串常量,类 ...
分类:
其他好文 时间:
2020-07-16 11:44:07
阅读次数:
41
在平时开发过程中,对于线上问题的排查以及系统的优化,免不了和Linux进行打交道。每逢大促和双十一,对系统的各种压测性能测试,优化都是非常大的一次考验。抽空整理了一下自己在线上问题排查以及系统优化的一些经验。 一、系统性能瓶颈在哪 我们常常提到项目的运行环境,那么运行环境包括哪些呢?一般包括你的操作 ...
分类:
编程语言 时间:
2020-07-15 15:51:13
阅读次数:
74
JVM垃圾回收的算法很多,但是不管是哪种算法,在进行GC时大致的流程都是差不多的,主要有以下3个过程: ###1. 枚举根节点 这个过程主要是找到所有的GC Roots对象,这些对象一般发生在JVM虚拟机栈栈帧、常量池中的静态对象、方法区中静态类属性引用、本地方法栈中引用的对象。这个过程会发生STW ...
分类:
其他好文 时间:
2020-07-12 13:56:39
阅读次数:
63
Java又不是C++,什么时候字符数组等于字符串了(对这句话我不负责任)? 而常量池中的字符串,只有变量名不同是可以用双等号判断是否相等的,内存都是常量池中的字符串。 但是new出来的字符串,只能用equals,用双等号是不相等的,因为是两个内存对象。 String的equals首先判断比较的对象是 ...
分类:
其他好文 时间:
2020-07-06 16:03:00
阅读次数:
52
示例代码: public class Demo2 { public static void main(String[] args) { String name1 = "qiu"; //"qiu" 常量存储在字符串常量池中 , name1指向"qiu" String name2 = "zhangsan ...
分类:
其他好文 时间:
2020-07-05 15:24:13
阅读次数:
77
package com.javaSe.Integer; /* 分析以下程序是为什么? 这个题目是Integer非常重要的一个面试题。 */ public class IntegerTest07 { public static void main(String[] args) { Integer a ...
分类:
其他好文 时间:
2020-07-03 00:56:51
阅读次数:
56
String类 属于不可变字符串,是字符串常量 equal方法 比较两个对象的内容是否相同,==是比较两个对象的内 存地址是否相同常量都是存在jvm,方法区的常量池当中 String str1 = "123"; String str2 = "123"; System.out.println(str1 ...
分类:
其他好文 时间:
2020-06-30 22:11:47
阅读次数:
57