草庐IT

面试官:说说 String.intern() 和常量池?不同 JDK 版本有什么区别?

0.Background在JAVA语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中1.常量池1.1常量池是什么?JVM常量池主要分为Cla

面试官:说说 String.intern() 和常量池?不同 JDK 版本有什么区别?

0.Background在JAVA语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中1.常量池1.1常量池是什么?JVM常量池主要分为Cla

JDK的安装和配置

目录下载jdk配置环境测试安装下载jdkJDk安装包:官网:https://www.oracle.com/cn/java/technologies/downloads/网盘(速度更快):https://www.123pan.com/s/aiv9-hkrG(适合Windows,其他版本可以去官网下载)配置环境右键此电脑,属性,出现:然后点击高级系统设置出现环境变量点击环境变量出现系统变量然后变量设置参数如下(如果已有该变量就修改,没有就新建)•变量名:JAVA_HOME•变量值:C:\ProgramFiles(x86)\Java\jdk1.8.0_91//要根据自己的实际路径配置•变量名:CLA

JDK的安装和配置

目录下载jdk配置环境测试安装下载jdkJDk安装包:官网:https://www.oracle.com/cn/java/technologies/downloads/网盘(速度更快):https://www.123pan.com/s/aiv9-hkrG(适合Windows,其他版本可以去官网下载)配置环境右键此电脑,属性,出现:然后点击高级系统设置出现环境变量点击环境变量出现系统变量然后变量设置参数如下(如果已有该变量就修改,没有就新建)•变量名:JAVA_HOME•变量值:C:\ProgramFiles(x86)\Java\jdk1.8.0_91//要根据自己的实际路径配置•变量名:CLA

Windows下jdk安装与卸载-超详细的图文教程

jdk安装下载jdk由于现在主流就是jdk1.8,所以这里就下载jdk1.8进行演示。官方下载地址:https://www.oracle.com/java/technologies/downloads/#java8-windows。官方下载需要注册oracle账号,国内下载有可能速度慢,若不想注册账号且需要更快的下载速度,可以通过国内的镜像网站进行下载。这里提供一个华为镜像网站:https://repo.huaweicloud.com/java/jdk/.安装jdk打开运行下载好的安装包。这里建议更改一下安装路径,选择一个容易记住的位置,可以专门创建一个目录用来存放开发环境。这里也可以使用默认

Windows下jdk安装与卸载-超详细的图文教程

jdk安装下载jdk由于现在主流就是jdk1.8,所以这里就下载jdk1.8进行演示。官方下载地址:https://www.oracle.com/java/technologies/downloads/#java8-windows。官方下载需要注册oracle账号,国内下载有可能速度慢,若不想注册账号且需要更快的下载速度,可以通过国内的镜像网站进行下载。这里提供一个华为镜像网站:https://repo.huaweicloud.com/java/jdk/.安装jdk打开运行下载好的安装包。这里建议更改一下安装路径,选择一个容易记住的位置,可以专门创建一个目录用来存放开发环境。这里也可以使用默认

JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

一、前言我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候;有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的javap命令来进行反编译,反编译出来的如果看不太明白,可以使用Jad工具来配合使用。还有就是把jar包完全反编译为我们写的代码的是GD-GUI,有兴趣可以去官网看一下哈,小编这里不做进一步说明。JD-GUI官网下载地址。我们今天以Stringstring=newString("wang")+newString("zhen");,这条语句在底层是怎么创建的来深入理解jvm底层,同时也对反编译有进一步的了

JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

一、前言我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候;有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的javap命令来进行反编译,反编译出来的如果看不太明白,可以使用Jad工具来配合使用。还有就是把jar包完全反编译为我们写的代码的是GD-GUI,有兴趣可以去官网看一下哈,小编这里不做进一步说明。JD-GUI官网下载地址。我们今天以Stringstring=newString("wang")+newString("zhen");,这条语句在底层是怎么创建的来深入理解jvm底层,同时也对反编译有进一步的了

JDK1.6中String类的坑,快让我裂开了…

摘要:JVM优化的目标就是:尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。本文分享自华为云社区《千万不要在生产环境使用这个版本的JDK,这不?内存又溢出了!快要裂开了!(建议收藏)》,作者:冰河。小伙伴的疑问问题确定排查问题的整个过程相当耗时,这里,我就直接说定位到的问题吧。后面,我会单独写一篇详细的排查问题过程的文章!在排查问题的过程中,我发现这位小伙伴使用的JDK还是1.6版本。开始,我也没想那么多,继续排查他写的代码,也没找出什么问题。但是一旦启动生产环境的程序,没过多久,JVM就

JDK1.6中String类的坑,快让我裂开了…

摘要:JVM优化的目标就是:尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。本文分享自华为云社区《千万不要在生产环境使用这个版本的JDK,这不?内存又溢出了!快要裂开了!(建议收藏)》,作者:冰河。小伙伴的疑问问题确定排查问题的整个过程相当耗时,这里,我就直接说定位到的问题吧。后面,我会单独写一篇详细的排查问题过程的文章!在排查问题的过程中,我发现这位小伙伴使用的JDK还是1.6版本。开始,我也没想那么多,继续排查他写的代码,也没找出什么问题。但是一旦启动生产环境的程序,没过多久,JVM就