zoukankan      html  css  js  c++  java
  • JVM虚拟机内存和String 类型深入

    1.监控程序运行时所占资源(内存等)(JConsole)

        Jconsole,Java Monitoring and Management Console。

       java监控和管理控制台,从java5开始,在JDK中提供。

       作用: 用于对JVM中内存,线程、类和虚拟机的运行情况等的监控。提供了本地监控和远程监控两种功能。

       注意: 这个工具很好用,对于监控程序的内存有很大的帮助,可以帮助你检查程序是否有内存溢出风险。

      操作细节:

      1.安装jdk(已经安装过的,可直接忽略)

         (1): 打开windows命令窗口输入: java -version 

               截图:

               

              文本信息:

              C:Usersuser>java -version
              java version "1.6.0_38"
              Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
              Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode)

          (2):在windows命令窗口中输入jconsole

               稍等一下,就会弹出一个控制台,里面会罗列可以监控的进程

               只需要将鼠标悬浮在上面,就会显示当前进程所在的位置,如图,就是我的Eclipse所在的位置,选择他,点击确定即可

               

            之后就会进入下面的界面了

           

          这个功能还是很强大的,他的使用也是很方便的,可以对内存和cpu的使用进行监控,也可以查看运行的线程和类

          开发程序的时候可以根据这个监控自己的程序,还是很不错的

    2.了解JVM内存的分配

      

      JVM主要管理两种内存

                                           堆内存 (Heap Memory):是JVM虚拟机启动时创建

                              栈内存(Non-heap Memory):是在JVM堆之外的内存 

      注:栈内存包含方法区、JVM内部处理或优化所需的内存(如 JITCompiler,Just-in-time Compiler,即时编译后的代码缓存)、每个类结构(如运行时常数池、字 段和方法数据)以及方法和构造方法的代码

    堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

    引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!

                       

    3.String类型的存储方式

    1. String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了,2147483647;

     又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。

  • 相关阅读:
    深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)
    ActionDescriptorProviderContext
    IActionDescriptorProvider
    JWT签名算法中HS256和RS256有什么区别 转载
    JWT 使用的另一种声音
    JWT(Json Web Token):一种在Web应用中安全传递信息的规范 转载
    http 的session 工作原理。
    一般安全机制
    android 上传图片 .html 和android 客户端
    interpolator, typeEvaluator 以及属性动画的参数
  • 原文地址:https://www.cnblogs.com/xiaohuBlog/p/5254676.html
Copyright © 2011-2022 走看看