javaGC回收机制 在面试java后端开发的时候一般都会问到java的自动回收机制(GC)。在了解java的GC回收机制之前,我们得先了解下Java虚拟机的内存区域。 java虚拟机运行时数据区 java虚拟机在执行的过程中会将其管理的内存划分为不用的数据区域,不同的区域有不同的作用以及线程时间。 ...
分类:
编程语言 时间:
2019-07-02 12:13:12
阅读次数:
117
程序的局部性原理(Local principle of program) 程序的局部性原理是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。 相应地,执行所访问的存储空间也局限于某个内存区域。 局部性原理又表现为:时间局部性和空间局部性。 时间局部性是指如果程序 ...
分类:
其他好文 时间:
2019-06-30 14:25:46
阅读次数:
109
1、为什么要使用分布式锁? 如下图所示,成员变量A存在JVM1、JVM2、JVM3三个JVM内存中。由于成员变量A同时都会在三个JVM上分配一块内存: + 若三个请求同时对这个变量操作时,显然结果是不对的; + 若三个请求依次分别请求三个不同的JVM内存区域的数据时,由于各JVM之间的 ...
分类:
其他好文 时间:
2019-06-23 20:37:26
阅读次数:
75
概述 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。 静态共享数据原理 static 修饰的内容: 是随着类的加载而加载的,且只加载一次。 存储于一块固定的内存区域(静态区),所以 ...
分类:
其他好文 时间:
2019-06-16 00:43:50
阅读次数:
137
虚拟机栈 1、虚拟机栈维护一个线程中所有方法的栈帧,每个栈帧中保存着这个方法中用到的局部变量表,操作数栈,常量引用 2、可以用-Xss来设置每个线程中虚拟机栈的大小,在jdk1.4之前默认虚拟机栈大小是256K,在jdk1.5+默认虚拟机栈大小是1M 3、该区域可能抛出的异常 当线程请求的栈深度超过 ...
分类:
其他好文 时间:
2019-06-15 13:48:31
阅读次数:
76
一、JVM主要的结构如下: 二、各个区域功能介绍 1)、方法区(Method Area): (1)用于存储虚拟机加载的类信息、常量、静态变量等,是各个线程共享的内存区域; (2)默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法 ...
分类:
编程语言 时间:
2019-06-14 18:28:43
阅读次数:
104
基本问题 介绍下java内存区域(运行时数据区) Java对象的创建 String类和常量池 介绍下java内存区域(运行时数据区) Java对象的创建 String类和常量池 1、概述 对于Java程序员来说,在虚拟机自动管理机制下,不在像C/C++那样为一个new操作去写对应的delete/fr ...
分类:
其他好文 时间:
2019-06-10 10:41:03
阅读次数:
107
概述 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。 静态共享数据原理 static 修饰的内容: 是随着类的加载而加载的,且只加载一次。 存储于一块固定的内存区域(静态区),所以 ...
分类:
其他好文 时间:
2019-06-09 23:41:48
阅读次数:
128
对象的创建 虚拟机遇到new指令后,会先去检查在常量池中(运行时数据区-方法区)是否可以定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化,如果没有,必须先执行相应的类的加载过程。 类加载检查通过后,虚拟机会为新生对象分配内存(堆上分配) 分配内存的方式: 1.指针碰撞:前 ...
分类:
编程语言 时间:
2019-06-08 15:00:35
阅读次数:
113