`
m635674608
  • 浏览: 5021984 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jvm 变量 内存分配

 
阅读更多
public class T {

	// 常量池中分配 String final
	private String a = "aa";

	// 常量池中分配
	final int ee = 22;
	// 堆中分配
	int ff = 20;
	// 超过一定的范围 在常量池中
	int ff2 = 200000;
	
	
	// 堆中分配
	Integer i = 4;
	// 超过一定的范围 在常量池中
	Integer i2 = 444444;
	// 堆中分配
	final Integer ii = 544;
	// 超过一定的范围 在常量池中
	final Integer ii2 = 55555;

	public void t() {
		// 常量池中分配 String final
		String b = "bb";
		// 常量池中分配
		final String c = "cc";
		// 栈中分配
		int f = 1;
		// 超过一定的范围 在常量池中
		int f1 = 111111;
		// 栈中分配
		final int f2 = 33;
		// 超过一定的范围 在常量池中
		final int f3 = 33333;
	}

}

    

const #2 = Asciz        T;
const #3 = class        #4;     //  java/lang/Object
const #4 = Asciz        java/lang/Object;
const #5 = Asciz        a;
const #6 = Asciz        Ljava/lang/String;;
const #7 = Asciz        ee;
const #8 = Asciz        I;
const #9 = Asciz        ConstantValue;
const #10 = int 22;
const #11 = Asciz       ff;
const #12 = Asciz       ff2;
const #13 = Asciz       i;
const #14 = Asciz       Ljava/lang/Integer;;
const #15 = Asciz       i2;
const #16 = Asciz       ii;
const #17 = Asciz       ii2;
const #18 = Asciz       <init>;
const #19 = Asciz       ()V;
const #20 = Asciz       Code;
const #21 = Method      #3.#22; //  java/lang/Object."<init>":()V
const #22 = NameAndType #18:#19;//  "<init>":()V
const #23 = String      #24;    //  aa
const #24 = Asciz       aa;
const #25 = Field       #1.#26; //  T.a:Ljava/lang/String;
const #26 = NameAndType #5:#6;//  a:Ljava/lang/String;
const #27 = Field       #1.#28; //  T.ee:I
const #28 = NameAndType #7:#8;//  ee:I
const #29 = Field       #1.#30; //  T.ff:I
const #30 = NameAndType #11:#8;//  ff:I
const #31 = int 200000;
const #32 = Field       #1.#33; //  T.ff2:I
const #33 = NameAndType #12:#8;//  ff2:I
const #34 = Method      #35.#37;        //  java/lang/Integer.valueOf:(I)L
ang/Integer;
const #35 = class       #36;    //  java/lang/Integer
const #36 = Asciz       java/lang/Integer;
const #37 = NameAndType #38:#39;//  valueOf:(I)Ljava/lang/Integer;
const #38 = Asciz       valueOf;
const #39 = Asciz       (I)Ljava/lang/Integer;;
const #40 = Field       #1.#41; //  T.i:Ljava/lang/Integer;
const #41 = NameAndType #13:#14;//  i:Ljava/lang/Integer;
const #42 = int 444444;
const #43 = Field       #1.#44; //  T.i2:Ljava/lang/Integer;
const #44 = NameAndType #15:#14;//  i2:Ljava/lang/Integer;
const #45 = Field       #1.#46; //  T.ii:Ljava/lang/Integer;
const #46 = NameAndType #16:#14;//  ii:Ljava/lang/Integer;
const #47 = int 55555;
const #48 = Field       #1.#49; //  T.ii2:Ljava/lang/Integer;
const #49 = NameAndType #17:#14;//  ii2:Ljava/lang/Integer;
const #50 = Asciz       LineNumberTable;
const #51 = Asciz       LocalVariableTable;
const #52 = Asciz       this;
const #53 = Asciz       LT;;
const #54 = Asciz       t;
const #55 = String      #56;    //  bb
const #56 = Asciz       bb;
const #57 = String      #58;    //  cc
const #58 = Asciz       cc;
const #59 = int 111111;
const #60 = int 33333;
const #61 = Asciz       b;
const #62 = Asciz       c;
const #63 = Asciz       f;
const #64 = Asciz       f1;
const #65 = Asciz       f2;
const #66 = Asciz       f3;
const #67 = Asciz       SourceFile;
const #68 = Asciz       T.java;

{
final int ee;
  Constant value: int 22
int ff;

int ff2;

java.lang.Integer i;

java.lang.Integer i2;

final java.lang.Integer ii;

final java.lang.Integer ii2;

public T();
  Code:
   Stack=2, Locals=1, Args_size=1
   0:   aload_0
   1:   invokespecial   #21; //Method java/lang/Object."<init>":()V
   4:   aload_0
   5:   ldc     #23; //String aa
   7:   putfield        #25; //Field a:Ljava/lang/String;
   10:  aload_0
   11:  bipush  22
   13:  putfield        #27; //Field ee:I
   16:  aload_0
   17:  bipush  20
   19:  putfield        #29; //Field ff:I
   22:  aload_0
   23:  ldc     #31; //int 200000
   25:  putfield        #32; //Field ff2:I
   28:  aload_0
   29:  iconst_4
   30:  invokestatic    #34; //Method java/lang/Integer.valueOf:(I)Ljava/l
teger;
   33:  putfield        #40; //Field i:Ljava/lang/Integer;
   36:  aload_0
   37:  ldc     #42; //int 444444
   39:  invokestatic    #34; //Method java/lang/Integer.valueOf:(I)Ljava/l
teger;
   42:  putfield        #43; //Field i2:Ljava/lang/Integer;
   45:  aload_0
   46:  sipush  544
   49:  invokestatic    #34; //Method java/lang/Integer.valueOf:(I)Ljava/l
teger;
   52:  putfield        #45; //Field ii:Ljava/lang/Integer;
   55:  aload_0
   56:  ldc     #47; //int 55555
   58:  invokestatic    #34; //Method java/lang/Integer.valueOf:(I)Ljava/l
teger;
   61:  putfield        #48; //Field ii2:Ljava/lang/Integer;
   64:  return
  LineNumberTable:
   line 1: 0
   line 4: 4
   line 7: 10
   line 9: 16
   line 11: 22
   line 15: 28
   line 17: 36
   line 19: 45
   line 22: 55
   line 1: 64

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      65      0    this       LT;


public void t();
  Code:
   Stack=1, Locals=7, Args_size=1
   0:   ldc     #55; //String bb
   2:   astore_1
   3:   ldc     #57; //String cc
   5:   astore_2
   6:   iconst_1
   7:   istore_3
   8:   ldc     #59; //int 111111
   10:  istore  4
   12:  bipush  33
   14:  istore  5
   16:  ldc     #60; //int 33333
   18:  istore  6
   20:  return
  LineNumberTable:
   line 26: 0
   line 28: 3
   line 30: 6
   line 32: 8
   line 34: 12
   line 36: 16
   line 37: 20

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      21      0    this       LT;
   3      18      1    b       Ljava/lang/String;
   6      15      2    c       Ljava/lang/String;
   8      13      3    f       I
   12      9      4    f1       I
   16      5      5    f2       I
   20      1      6    f3       I


}

 

分享到:
评论

相关推荐

    JVM内存空间分配笔记

    ### JVM内存空间分配详解 #### 一、JVM内存模型概览 ...综上所述,理解JVM内存分配机制对于Java开发者来说至关重要,这不仅有助于编写高效、稳定的代码,还能在遇到性能瓶颈时快速定位问题并进行优化。

    java中jvm内存分配相关资料总结整理

    本资料总结主要关注JVM内存分配及其运行原理,这对于理解和优化Java应用程序的性能至关重要。 1. **JVM内存结构** JVM内存分为几个关键区域:方法区(Method Area)、堆(Heap)、栈(Stack)、程序计数器(PC ...

    java -jvm 内存分配和jvm调优

    Java JVM(Java虚拟机)内存分配与调优是Java开发者必须掌握的重要技能,它涉及到程序的性能优化和稳定性。在Java应用中,JVM扮演着至关重要的角色,它负责解析字节码、管理内存以及执行线程等。本文将深入探讨JVM...

    JVM内存分配与垃圾回收详解

    JVM 内存分配与垃圾回收详解 Java 虚拟机(JVM)是 Java 语言的 runtime 环境,它提供了一个平台独立的方式来执行 Java 字节码。JVM 内存分配与垃圾回收是 JVM 中两个非常重要的概念,本文将对 JVM 内存分配与垃圾...

    JVM内存溢出问题解析

    堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,但缺点是要在运行时动态分配内存,存取速度较慢。 JVM 如何设置虚拟内存?在 JVM 中,如果 98%的时间是用于 GC 且可用的 Heap size 不足 2%的时候...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    通过命令行参数,我们可以精细地控制JVM的内存分配,以适应不同的应用场景。以下是一些关键参数的解读与实践指南: 1. **-Xms**:设置JVM初始堆内存大小。保持-Xms和-Xmx相等,有助于减少GC停顿时间,尤其在Server...

    JVM初始分配的内存.doc JVM初始分配的内存.doc

    ### JVM初始分配的内存知识点详解 #### 一、概述 JVM(Java Virtual Machine)是运行Java程序的基础环境,它负责将编译后的字节码转换成机器指令并执行。为了确保Java应用能够高效地运行,正确配置JVM的内存参数至...

    jvm 内存分析文档

    JVM内存管理主要包括内存结构、内存分配以及垃圾回收(GC)等方面。了解这些知识对于优化Java应用程序的性能至关重要。 ### 1. JVM内存结构 #### 1.1.1 JVM内存概述 JVM内存分为几个关键区域,每个区域都有特定的...

    JVM初探内存分配GC原理与垃圾收集器共16页.pdf.z

    深入理解JVM内存分配、垃圾收集(Garbage Collection, GC)原理以及垃圾收集器的工作方式对于优化程序性能至关重要。 首先,我们要了解JVM内存结构。在Java中,内存主要分为以下几个区域: 1. **堆内存(Heap)**...

    JVM-内存管理 2012-12.pdf

    内存分配指的是当应用程序创建对象时,JVM会为对象分配内存。这个过程对Java程序员来说是透明的,通常不需要干预。对象通常在Java堆的新生代的Eden区创建,当Eden区空间不足时,会触发一次Minor GC(年轻代垃圾收集...

    Jvm内存分配(7)

    《Jvm内存分配(7)》这篇博文主要探讨的是Java虚拟机(JVM)中的内存管理,特别是关于内存分配的相关知识。在Java程序运行时,JVM会为不同部分的内存区域进行分配,以保证程序的正常执行。以下是对这一主题的详细...

    java获得jvm内存大小

    通过动态地调整`-Xms`和`-Xmx`参数,可以在运行时根据实际需求优化内存分配,从而提高程序的性能和稳定性。此外,定期检查和分析`heapSize`、`heapMaxSize`和`heapFreeSize`等指标,可以帮助开发者及时发现潜在的...

    Sun JVM原理与内存管理

    ### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成...通过合理的内存分配策略和恰当的 GC 调整,可以显著提高应用程序的性能和稳定性。

    JVM 深入学习教程深入分析JVM教程!jvm 内存原型,优化等等

    本教程将涵盖JVM内存模型、内存分配以及优化策略。 一、JVM内存模型 1. 堆内存:堆是所有线程共享的一块内存区域,主要用于存储对象实例。Java中的动态内存分配主要在堆上进行,垃圾收集器也会对堆进行管理,进行...

    jvm的内存结构图的ppt模型分析.zip

    Java虚拟机(JVM)是Java程序运行的基础,它的内存结构是理解Java应用程序性能和内存管理的关键。在“jvm的内存结构图的ppt模型分析”中,我们将深入探讨JVM内存的不同区域及其功能。 首先,JVM内存可以分为堆内存...

    JVM内存模型深度剖析与优化.pdf

    JVM内存优化的目的是尽可能让对象都在新生代里分配和回收,避免频繁对老年代进行垃圾回收。以下是一些JVM内存优化的技巧: 1. 设置适当的堆大小:根据实际项目情况,设置适当的堆大小可以避免频繁的垃圾回收。 2. ...

    解析JVM内存结构和6大区域

    由于 JVM 栈是线程私有的,因此其在内存分配上非常高效,并且当线程运行完毕后,这些内存也就被自动回收。当 JVM 栈的空间不足时,会抛出 StackOverflowError 的错误,在 Sun JDK 中可以通过-Xss 来指定栈的大小。 ...

    JVM 内存结构及配置总结

    本文将详细解析JVM的内存结构、内存分配策略以及相关的配置参数。 1. **JVM内存结构** JVM内存主要分为以下几个区域: - **方法区(Method Area)**:这是所有线程共享的区域,存储类信息、常量、静态变量、...

    Java中堆内存与栈内存分配浅析

    ### Java中堆内存与栈内存分配浅析 #### 一、引言 在Java编程语言中,内存管理是一项至关重要的技术。程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的...

Global site tag (gtag.js) - Google Analytics