java内存
→思
这个作者很懒,什么都没留下…
展开
-
Java虚拟机运行时数据区
一、运行时数据区总览Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。二、程序计数器程序计数器是一快较小的内存空间,它可以看做是当前栈所执行字节码的行指示器。在虚拟机的概念模型中,字节码解释器的工作就是通过改变这个计数器的...原创 2019-03-25 13:36:37 · 181 阅读 · 0 评论 -
final修饰的变量就是常量?final修饰局部变量在栈还是堆还是常量池中?
概念什么是常量?对于这个问题,可能很多人都可以脱口而出 : 用final修饰的变量是常量 ,或者是在编译时期定义好的字符串。(字符串常量)但是这种说法是不严谨的,因为准确来说 : 常量是用final修饰的成员变量!常量在类编译时期载入类的常量池中。即final修饰的成员变量(实例变量)和静态变量(静态变量也只能是用static修饰的成员变量),那么用final修饰的局部变量(方法内)我们也...转载 2019-03-28 09:58:56 · 2100 阅读 · 0 评论 -
java中对象的访问定位
java中对象的访问定位建立对象是为了使用对象,我们java程序员需要通过虚拟机栈中的reference来访问对象,但是虚拟机的规范中只规定了一个指向对象的指针,并没有规定以哪种方式去定位、访问对象在堆中的具体位置。所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中...原创 2019-03-28 19:23:43 · 172 阅读 · 0 评论 -
GC日志参数详解
一、输出GC简要信息-verbose:gc 或-XX:+PrintGC[GC (Allocation Failure) 7987K->5378K(19456K), 0.0133927 secs][GC (Allocation Failure) 13570K->11246K(19456K), 0.0220739 secs][Full GC (Ergonomics) 11...转载 2019-03-29 13:36:01 · 1226 阅读 · 0 评论 -
JVM新生代为什么要有Survivor区
1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里?堆内存分类如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Ful...转载 2019-06-12 12:47:02 · 500 阅读 · 0 评论