1 - 引言 2 - 常量池 2.1 你真的懂 Java的“字面量”和“常量”吗? 2.2 常量和静态/运行时常量池有什么关系?什么是常量池? 2.3 字节码下的常量池以及常量池的加载机制 2.4 是不是所有的数字字面量都会被存到常量池中?3 - 包装类对象池 =JVM 常量池4 - 字符串池 4.1 字符串池的实现——StringTable 4.2 字符串池存的是实例还是引用?5 - 补充 5.1 永久代为何被 HotSpot VM 废弃? 5.2 为什么 Java 要分常量.简单类型.引用类…
1,java内存模型简介 <深入理解java虚拟机>里将java内存分为如下五个模块: 堆-堆是所有线程共享的,主要用来存储对象. 其中,堆可分为:新生代和老年代两块区域.使用NewRatio参数来设定比例.对于年轻代,一个Eden区和两个Suvivor区,使用参数SuvivorRatio来设定大小: Java虚拟机栈/本地方法栈-线程私有的,主要存放局部变量表,操作数栈,动态链接和方法出口等: pc寄存器(程序计数器)-同样是线程私有的,记录当前线程编译class文件的行号指示器,为线程之间…
Commons-pool是一个apache开源组织下的众多项目的一个.其被广泛地整合到众多需要对象池功能的项目中. 官网:http://commons.apache.org/proper/commons-pool/ 本文是commons-pool的一个简单应用,包括不带key的池和带key的池.带key的池是把key相同的池对象放在一起池里,也就是说有多少个key就有多少个池. 不带key的池是生产完全一致的对象放在池里,但是有时候,单用对池内所有对象一视同仁的对象池,并不能解决的问题.例如,对…
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收.在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置, 所有位于这个范围内的整数使用的都是同一个对象.同理,单个字母也是这样的. In [1]: a=-5 In [2]: b=-5 In [3]: a is b Out[3]: True In [4]: a…
Json 中日期类型数据处理,服务端传输的日期没有分隔符,一般格式就两种,[20151212121212]即yyyyMMddhhmmss和[121212]hhmmss import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { public static void main(String[] arg…
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String args[]) { // 使用构造方法定义了新的内存空间,不会自动入池 String stra = new String("hello"); String strb = "hello"; // 直接赋值 System.o…
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String args[]) { String str = "hello"; // str是对象名称,而"hello"是内容 System.out.println("hello".equals(str)); //…
java程序 兔子 public class 兔子{ //构造方法 public 兔子(){} public void 吃草(){ System.out.println("兔子在吃草"); } } java程序 兔子测试 public class 兔子测试{ public static void main(String[] args){ 兔子 吃; 吃= new 兔子(); 吃.吃草(); } } javac 编译可通过,class程序也可运行,如下图…
目录 JVM 内存划分与内存溢出异常 垃圾回收算法与收集器 虚拟机中的类加载机制 Java 内存模型与线程 虚拟机性能监控与故障处理工具 参考 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点. --当年明月 @ JVM 内存划分与内存溢出异常 概述 如果在大学里学过或者在工作中使用过 C 或者 C++ 的读者一定会发现这两门语言的内存管理机制与 Java 的不同.在使用 C 或者 C++ 编程时,程序员需要手动的去管理和维护内存,就是说需要手动的清除那些不需要的对象,否则就会出现内…
介绍 StringJoiner是java.util包中的一个类,用于构造一个由分隔符分隔的字符序列(可选),并且可以从提供的前缀开始并以提供的后缀结尾.虽然这也可以在StringBuilder类的帮助下在每个字符串之后附加分隔符,但StringJoiner提供了简单的方法来实现,而无需编写大量代码. StringJoiner类共有2个构造函数,5个公有方法.其中最常用的方法就是add方法和toString方法,类似于StringBuilder中的append方法和toString方法. 用法 S…