最新文章列表

JVM系列之String

一、常量池     运行时常量池是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进去方法区的运行时常量池中存放。Java语言并不要求常量一定只有编译期才能产生,运行期间也可能将新的常量放入池中,比如String类的intern()方法。     常量池中主要存放两大类常量:字面量 ...
ncs123 评论(0) 有497人浏览 2017-12-14 21:40

方法区和运行时常量池溢出

引用方法区和运行时常量池溢出  ide配置参考堆溢出 附件 import com.google.common.collect.Lists; import java.util.List; /** * @Author admin Date: 2017/6/19 10:40 * @description: 方法区和运行时常量池溢出 ide配置参考堆溢出 附件 */ pub ...
subject 评论(0) 有1369人浏览 2017-06-19 15:46

java字节码常量池处理说明

1. 根据java的字节码格式说明,常量池中每一项的大小不一样的。运行时,若要通过数组索引获取具体的一项时, 必须要经过一定的处理才能根据数组下标进行处理,具体的实现原理实际上就是空间换时间,可以参考kvm的实现:   每一项的定义,采用的是union的定义(会取最大的字节数进行内存分配)   /* Each of these represents one entry in the co ...
jimmee 评论(0) 有1110人浏览 2016-04-13 23:23

JVM虚拟机-常量池(十一)

转载:http://www.cnblogs.com/iyangyuan/p/4631696.html 小菜先拙劣的表达一下jvm虚拟内存分布:        程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。      本地方法栈是jvm调用操作系统方法所使用的栈。      虚拟机栈是jvm执行java代码所使用的栈。      方法区存放了一些常量、 ...
yanan0628 评论(0) 有2366人浏览 2015-12-28 12:03

Java字符串存储问题

堆:存放所有new出来的对象。 常量池:存放字符串常量和基本类型常量(public static final)。   对于字符串:其对象的引用都是存储在栈中的,如果 ...
jsjrjz08 评论(0) 有597人浏览 2015-09-22 10:02

jvm之String 在jvm中分配

----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~--------------------------------------- 关于String的些许探讨 首先看下面的案例: /** * JV ...
王新春 评论(0) 有1043人浏览 2015-03-09 20:50

java中的值传递,引用传递

        无意中看到一个问题,java是值传递还是引用传递,有人说只有值传递,有人说值传递和引用传递都有,我一直认为是值传递和引用传递都有的,原始数据类型以及其封装类型是值传递,如int,Integer,再被别的方法使用的时候,传递的只是值,或者说是复制了一份内容,给新的方法,方法的处理不会影响方法体之外的该对象。复杂数据类型为引用传递,如自定义的一个Dog,传递的是该类的对象的引用,在方 ...
men4661273 评论(6) 有1542人浏览 2014-11-19 08:14

java内存分配和String的不变性

转载请出自出处:http://eksliang.iteye.com/blog/2146549 http://eksliang.iteye.com 一.java分配内存涉及的区域包括 寄存器 常量池 栈 堆 静态存储域 二.寄存器介绍       寄存器是最快的内存区域,因为他保存在处理器内部,这块区域我们没有直接的控制权,也不可能在代码里面找到寄存器的任何存在踪迹,所以这块 ...
eksliang 评论(0) 有2486人浏览 2014-10-22 16:07

字符串常量池

原文链接http://www.importnew.com/10756.html Java语言规范第三版中的字符串常量 每一个字符串常量都是指向一个字符串类实例的引用。字符串对象有一个固定值。字符串常量,或者一般的说,常量表达式中的字符串都被使用方法 String.intern进行保留来共享唯一的实例。 package testPackage; class Test {         public ...
darrenzhu 评论(0) 有675人浏览 2014-04-29 10:20

Java String用法总结

本文为转载,原文地址为:http://bbs.csdn.net/topics/310018695       String类是Java中很重要的一个类,在此总结一下这个类的特别之处。下面的相关资料翻译自《java语言规范》(第三版)和《java虚拟机规范》(第二版),有的直接摘引了原文。下面的代码都是用SUN jdk1.6 javac来编译。 1.String literal,这里将它翻译 ...
darrenzhu 评论(0) 有1107人浏览 2014-03-06 14:49

java中的内存分析

寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制。 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 堆:存放所有new出来的对象,由垃圾回收器控制生命周期。 静态域:存放静态成员(static定义的)。 常量池:存放字符串常量和基本类型常量(public s ...
akon405 评论(0) 有956人浏览 2014-02-24 19:03

深度解析java内存原型

来源:chinaitlab 本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。 一、Java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM存储:硬盘等永久存储空间。 二、常量池(constant ...
锋之弥漫 评论(0) 有734人浏览 2013-07-03 10:08

String,StringBuffer,StringBuilder和常量池

String是固定长度的字符串,如果要发生变化必须重新生成新的实例; String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线 ...
落地窗 评论(0) 有1612人浏览 2013-04-16 11:32

jvm简介-class文件格式解析示例

环境 JDK 1.6.0_10-rc2 源代码 /** * 验证java class文件格式格式 * 以下代码不要修改: * @author: zhanglixin * @version: 1.0 2013-1-10 */ public class  ClassFormat1 implements Serializable{ final int C=8; final String S= ...
rodesad 评论(0) 有634人浏览 2013-01-16 10:41

Java String类

Java的类库中有一个很特殊的类,就是String。我认为它主要特殊在两点。 第一点,它重载了“+”和“+=”操作符。Java不允许程序员重载任何操作符。Java对String的这种设计初衷,是为了程序员能够更方便的使用String这个类,但是却带来了意想不到的结果:重载带来了内存开销。《Java编程思想》书中第十三章也表达了这个意思。 Java重载的实际实现方式,借助了StringBuil ...
ZaneLee007 评论(2) 有3554人浏览 2012-01-17 02:40

检测一个字符串是否在jvm的常量池中(原创)

检测一个字符串是否在jvm的常量池中 public static boolean inPool(String s) { String s2 = s.intern(); if (s2 == s) return true; return false; }
kong0itey 评论(0) 有2159人浏览 2012-01-11 09:07

jvm常量池

在jvm规范中,每个类型都有自己的常量池。常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。之所以是符号引用而不是像c语言那样,编译时直接指定其他类型,是因为java是动态绑定的,只有在运行时根据某些规则才能确定具体依赖的类型实例,这正是java实现多态的基础。   为了对常量池有更具体的认识,下面引用几个例子: 1,常量池 ...
jiangwenfeng762 评论(1) 有1440人浏览 2011-11-29 18:28

Java中的栈,堆和常量池

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.   2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)   3. 堆:存放所有new出来的对象。   4. 静态域:存放静态成员(static定义的)   5. 常量池:存放字符串常量和基本类型常量(public stati ...
yangmeng_3331 评论(2) 有950人浏览 2011-11-15 21:34

String 学习笔记

1 String a = new String("aha");       在编译时,会在常量池中先查找字面值是"aha"的String对象,叫做“拘留String对象”。 如果存在,则 ...
zyfhenry 评论(0) 有823人浏览 2011-10-19 18:28

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics