内存类型

可能是把 Java 内存区域讲的最清楚的一篇文章

一曲冷凌霜 提交于 2019-12-03 04:52:33
出处: 可能是把 Java 内存区域讲的最清楚的一篇文章 Java 内存区域详解 写在前面 (常见面试题) 基本问题 拓展问题 一 概述 二 运行时数据区域 2.1 程序计数器 2.2 Java 虚拟机栈 2.3 本地方法栈 2.4 堆 2.5 方法区 2.5.1 方法区和永久代的关系 2.5.2 常用参数 2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 2.6 运行时常量池 2.7 直接内存 三 HotSpot 虚拟机对象探秘 3.1 对象的创建 Step1:类加载检查 Step2:分配内存 Step3:初始化零值 Step4:设置对象头 Step5:执行 init 方法 3.2 对象的内存布局 3.3 对象的访问定位 四 重点补充内容 4.1 String 类和常量池 4.2 String s1 = new String("abc");这句话创建了几个字符串对象? 4.3 8 种基本类型的包装类和常量池 参考 Java 内存区域详解 如果没有特殊说明,都是针对的是 HotSpot 虚拟机。 写在前面 (常见面试题) 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String 类和常量池

JAVA泛型

我只是一个虾纸丫 提交于 2019-12-03 04:42:06
JAVA中的基本类型,以及泛型的介绍、使用。 一、数据类型 数据类型 :数据与操作是构成程序的两个要素,数据也是程序处理的对象。数据类型是对程序所处理的数据的抽象,数据类型决定了数据的含义、表示方式、存储格式和运算。 JAVA基本数据类型 :不存在引用的概念,基本数据类型都是直接存储在内存中的内存栈上,数据本身的值就是存储在栈空间里面,因此使用时需赋具体值,且可用==判断是否相等。JAVA里面的八种基本数据类型都是这种存储模型。 JAVA八种基本数据类型:    byte :JAVA中最小的数据类型,在内存中占8位,即1个字节。取值范围是-128 ~ 127,默认值0。    short :短整型,在内存中占16位,即2个字节。取值范围-32768~32717,默认值0。    int :整型,用于存储整数。在内存中占32位,即4个字节。取值范围-2147483648~2147483647,默认值0。    long :长整型,在内存中占64位,即8个字节。取值范围-2 63 ~2 63 -1,默认值0L。    float :浮点型,在内存中占32位,即4个字节。用于存储带小数点的数字(与double的区别是float小数点后精度为7位),默认值为0。    double :双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0。    char :字符型

redis入门(一)

假装没事ソ 提交于 2019-12-03 04:25:52
目录 redis入门(一) 前言 特性 速度快 简单稳定 丰富的功能 历史 历史版本 安装与启动 安装 数据类型与内部编码 数据结构 内部编码 常用API与使用场景 常用命令 字符串 列表 哈希 集合 有序集合 总结 参考文档 redis入门(一) 前言 Redis是什么? redis 是一种基于键值对(key-value)的NoSQL数据库。Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。 Redis能做什么 在谈为什么需要redis之前,先要清楚redis可以做什么。 缓存。通过引入缓存加快数据的访问速度,降低后端数据源的压力。 排行榜。redis提供给列表和有序几何数据结构可以很方便的构建各种排行榜系统。 计数器。redis原生支持高性能的计数功能,可以为视频播放量、网页浏览数等提供支持。 消息队列。redis提供发布订阅功能。 特性 我们为什么选择redis? 速度快 官方给出的读写速度可以达到10W/s,以下是我本机双核四线程低压i7上测试的对字符串的读写速度。 C:\Users\Dm_ca> redis-benchmark -n 100000 -t

Java变量

与世无争的帅哥 提交于 2019-12-03 04:03:20
2.变量 l 变量的概念: 内存中的一个存储区域 该区域有自己的名称(变量名)和类型(数据类型)和值 Java中每个变量必须先声明,再赋值,然后才能使用 该区域的数据可以在同一类型范围内不断变化 Java 中的变量有四个基本属性:变量名,数据类型,存储单元和变量值 变量名: 合法的标识符 变量的数据类型: 可以是基本类型和引用类型(必须包含类型) 存储单元: 存储单元大小是由数据类型决定的,如:int 为4 个字节32 位 变量值: 在存储单元中放的就是变量值(如果是基本类型放的就是具体值,如果是引用类型放的是内存地址,如果null,表示不指向任何对象) l 定义变量的格式:数据类型 变量名 = 初始化值 l 变量是通过使用变量名来访问这块区域的 //int是一种数据类型,是整型。 int a; //在内存中开辟一块空间,这块空间的类型是整型,给这块空间起名叫a //赋值 a = 100; //通过变量名去访问那块内存。 System.out.println(a); //重复访问 System.out.println(a); l 使用变量注意: 变量的作用域:一对{ }之间有效。出了大括号就不认识了。 初始化值 变量可以重复赋值,但不能重复声明,在同一个域中,变量名不能重复。 2.1 关于java中的字面值: 1.什么是字面值? 一眼看上去就知道是多少的数据,就是字面值 2

每日面试之 面试基础1

删除回忆录丶 提交于 2019-12-03 02:44:41
目录 面试基础1 1 、sorted和sort这俩有什么区别 2、exec() eval()的区别 3、元类可以做什么 4、新式类和经典类 5、迭代器和生成器 6.关于装饰器 7.猴子补丁 8.==和is 9.浅拷贝和深拷贝 10.可变类型和不可变类型 11.Python的自省功能 12.Python中的下划线 13only/defer/select_related/perfetch_related 14为什么学习python 15通过什么途径学习的Python? 16Python和Java、PHP、C、C#、C++等其他语言的对比? 17简述解释型和编译型编程语言? 18Python解释器种类以及特点? 19位和字节的关系? 20 b、B、KB、MB、GB 的关系? 21请至少列举5个 PEP8 规范(越多越好)。 面试基础1 1 、sorted和sort这俩有什么区别 sorted() l=[1,3] l.sort() Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。 sort是容器的函数,用List的成员函数sort进行排序 sorted是Python的内建函数相同的参数,用built-in函数sorted进行排序 sorted(iterable,key=None,reverse

JAVA-基础

早过忘川 提交于 2019-12-03 02:03:17
一、Java 基础   1.JDK 和 JRE 有什么区别?   答:JRE 是 Java Runtime Environment 的缩写,顾名思义是 java 运行时环境,包含了 java 虚 拟机,java 基础类库。是使用 java 语言编写的程序运行所需要的软件环境,是提供给想运行 java 程序的用户使用的,还有所有的 Java 类库的 class 文件,都在 lib 目录下,并且都打包成 了 jar。 Jdk 是 Java Development Kit 的缩写,顾名思义是 java 开发工具包,是程序员使用 java 语言编写 java 程序所需的开发工具包,是提供给程序员使用的。JDK 包含了 JRE,同时还包 含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具:jconsole, jvisualvm 等工具软件,还包含了 java 程序编写所需的文档和 demo 例子程序。 如果你需要运行 java 程序,只需安装 JRE 就可以了。如果你需要编写 java 程序,需要 安装 JDK。   2.== 和 equals 的区别是什么?   答: (1):对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; (2)equals 解读 equals

redis入门(一)

匿名 (未验证) 提交于 2019-12-03 00:44:02
Ŀ¼ Redis是什么? redis 是一种基于键值对(key-value)的NoSQL数据库。Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。 Redis能做什么 在谈为什么需要redis之前,先要清楚redis可以做什么。 缓存。通过引入缓存加快数据的访问速度,降低后端数据源的压力。 排行榜。redis提供给列表和有序几何数据结构可以很方便的构建各种排行榜系统。 计数器。redis原生支持高性能的计数功能,可以为视频播放量、网页浏览数等提供支持。 消息队列。redis提供发布订阅功能。 我们为什么选择redis? 官方给出的读写速度可以达到10W/s,以下是我本机双核四线程低压i7上测试的对字符串的读写速度。 C:\Users\Dm_ca> redis-benchmark -n 100000 -t set,get -q -a test1 SET: 11993.28 requests per second GET: 57603.69 requests per second 若使用redis管道技术可以得到更高的读写速度 C:\Users\Dm_ca>

jmc使用说明

匿名 (未验证) 提交于 2019-12-03 00:38:01
实验JDK版本:jdk1.8.0_73 JMC:5.5(最新已经6.0了支持jdk9) JMC:Java Mission Control 伴随着5月份oracle的一份开源声明―- JMC Open Sourced JMC又一次备受关注。 JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。 使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。 主要部分 JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。 JFR

jmc使用说明

匿名 (未验证) 提交于 2019-12-03 00:37:01
实验JDK版本:jdk1.8.0_73 JMC:5.5(最新已经6.0了支持jdk9) JMC:Java Mission Control 伴随着5月份oracle的一份开源声明―- JMC Open Sourced JMC又一次备受关注。 JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。 使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。 主要部分 JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。 JFR

关于指针类型和指针类型转换的理解

匿名 (未验证) 提交于 2019-12-03 00:37:01
“ 值相同的两个指针所指向的变量的值可以不同 ” 这句话时,发现自己对指针类型一些概念仅仅是记住了结论。于是以理解这句话为出发点,查阅了一些资料,用这篇博客来记录一下一些与指针类型和指针类型转化相关的知识。 一些用到的 在开始之前,先来复习一些下面会用到的知识。 1.内存地址,字节,位   位(bit)是电子计算机中最小的数据单位。每一位的状态只能是0或1。   字节(Byte)是用于计量存储容量的一种单位,每一个字节由8位组成(1Byte = 8bit)。   内存地址是在一片内存中,每个一个字节的编号。   他们在内存中的关系就好像,内存是一栋大楼,字节的大楼中的每一层,地址是楼层编号,位是每一层中的房间,每一层有8个房间。     2.变量的内存   编译器会根据变量的类型,在内存中申请一块空间。不同的编译环境中申请到的空间也不同。例如32位与64位中 int 类型申请到4字节的空间,可以理解为编译器申请了几层楼,作为”办公区域“。 3.指针变量   指针是指程序数据在内存中的地址。在c语言当中,允许用一个变量来存放指针,这种变量称为指针变量。 指针变量只知道楼层号?    存储在指针变量的值,是计算机中的内存地址,也就是“楼层号”。我们在写程序时候,想要让指针指向一个变量,会将一个变量的地址赋给一个指针:   int a;    int * p;   p = &a;