简单记录JVM存储空间的几大模块的常用名称;使用哪些参数对各个模块进行尺寸设置及垃圾回收;最后举例子说明下参数配置后的GC的效果。 第一步,首先对于存储的几大模块进行一下简单描述: 1)JVM的内存分为两块:A.堆heap B.非堆non-heap:即堆以外的栈、方法区、常量池、寄存器空间(称为Pe ...
分类:
其他好文 时间:
2017-10-13 20:10:18
阅读次数:
107
最全、最完整的JAVA7运行时数据区图解,每个部分均包含简要说明,组成部分包括:线程共享区域方法区、运行时常量池、JAVA堆、直接内存线程私有区域PC寄存器、本地方法栈、JVM栈【栈志局部变量表、操作数栈、动态链接、异常分派表】】参考书目:《Java虚拟机规范(JavaSE7中文版)..
分类:
编程语言 时间:
2017-10-11 00:39:31
阅读次数:
148
一、字符串 字符串对象一旦被初始化就不会被改变。 string s="abc"; string s1="abc"; 字符串常量被放在字符串常量池中,所以s和s1的地址是相同的,都指向字符串常量池中的“abc”。 但是: string s="abc"; String s1=new String("ab ...
分类:
其他好文 时间:
2017-10-08 19:40:02
阅读次数:
173
原文链接:http://www.cnblogs.com/ityouknow/p/5610232.html 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么 ...
分类:
其他好文 时间:
2017-10-03 12:42:44
阅读次数:
134
package day01; import org.junit.Test; public class TestString { /** * 测试常量池 * * */ @Test public void testConstantPool(){ String str1 = "Hello"; // Str... ...
分类:
编程语言 时间:
2017-09-30 19:58:21
阅读次数:
155
Java虚拟机JVM(Java Virtual Machine)中内存分块 JAVA中通常分为5个区域虚拟机栈、堆、方法区、程序计数器、本地方法区。我们一般讲的是Java虚拟机管理的四个区域虚拟机栈、堆、方法区和程序计数器。 虚拟机栈 虚拟机栈通常也叫栈(stack),是有多个栈帧组成的;是线程私有 ...
分类:
编程语言 时间:
2017-09-29 13:58:02
阅读次数:
208
jdk1.7对jvm运行时内存划分做了调整,1.6的常量池是在方法区中,1.7的常量池划分到了堆中。 从下面一段代码分析: String s1 = new String("aaa")+new String("bbb"); s1.intern(); String s2 = "aaabbb"; Syst ...
分类:
其他好文 时间:
2017-09-28 22:24:55
阅读次数:
159
引言 Java语言不要求常量一定要在编译期才能产生,也就是并非预置入Class文件中常量池的内容才能进入方法区的运行时常量池,程序运行期间也可以将常量放入池中。 设计字符串常量池的原因 字符串在java程序中被大量使用,为了避免每次都创建相同的字符串对象及内存分配,JVM内部对字符串对象的创建做了一 ...
分类:
其他好文 时间:
2017-09-28 13:07:39
阅读次数:
208
刚开始看字符串的时候,经常会看到类似的题,难免会有些不解,查看答案总会提到字符串常量池、运行常量池等概念,很容易让人搞混。 下面就来说说Java中的字符串到底是怎样创建的。 String有两种赋值方式,第一种是通过“字面量”赋值。 第二种是通过new关键字创建新对象。 String str = ne ...
分类:
编程语言 时间:
2017-09-27 20:39:18
阅读次数:
140
一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 最快的存储区, 由编译器根 ...
分类:
编程语言 时间:
2017-09-26 21:20:47
阅读次数:
161