- 博客(5)
- 收藏
- 关注
原创 HotSpot 虚拟机对象
对象的创建 语言层面上,对象的创建有4种方式: - new 关键字 - 反射 - 反序列化 - 克隆 对象的创建过程 虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便...
2019-06-10 20:48:13 174
原创 Docker 常用指令
启动全部容器 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) 关闭全部容器 docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) 删除全部容器 docker rm $(docker ps -a | awk '{ print $1}' | tai...
2019-06-02 23:47:28 143
原创 JVM内存区域详解
运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 根据《Java虚拟机规范(Java SE 8版)》规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域: 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。 Java虚拟机栈 ...
2018-10-14 14:43:24 104
原创 什么情况下会出现OutOfMemoryError异常?
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有可能发生OutOfMemoryError异常的可能。 Java堆溢出 Java堆用于存储对象实例,只要不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。下面为代码示例: /** * @Description: ...
2018-10-12 23:14:29 4165
翻译 String为什么是不可变的
什么是不可变? String不可变很简单,如下图,给一个已有String第二次赋值,不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。 为什么String是不可变的? 首先String类是用final关键字修饰,这说明String不可继承。再看下面,String类的主力成员字段value是个char[ ]数组,而且是用final修饰的。final修饰的字段创建以后就不可改变。有的人...
2016-08-09 23:26:13 272
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人