• 堆,栈,常量池


    java 中保存new 出来的对象(每个对象都包含一个与之对应的class的信息,【class信息存放在方法区】),堆中分配的内存,有虚拟机的自动垃圾回收器管理,栈内存只对其所属线程可见。

    java 中保存一些基本数据类型 (int,long,byte,double,float,char,boolean,short)和引用变量,堆内存对所有线程可见。

    异常错误

    如果栈内存没有可用的空间存储方法调用和局部变量,JVM会抛出java.lang.StackOverFlowError。
    而如果是堆内存没有可用的空间存储生成的对象,JVM会抛出java.lang.OutOfMemoryError。

    空间大小

    栈的内存要远远小于堆内存,如果你使用递归的话,那么你的栈很快就会充满。如果递归没有及时跳出,很可能发生StackOverFlowError问题。
    你可以通过-Xss选项设置栈内存的大小。-Xms选项可以设置堆的开始时的大小,-Xmx选项可以设置堆的最大值。

    方法区:

    又叫静态区,跟堆一样,被所有的线程共享。它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

    String a = new String("abc"); 产生一个或者两个对象。会先去常量池看有没有"abc"对象,若果没有则创建一个,然后堆中再创建一个常量池中此 ”abc” 对象的拷贝对象。

  • 相关阅读:
    StrutsTestCase 试用手记
    java版的SHA1
    看看junit在一个具体的项目中
    store/index.js中引入并注册modules目录中的js文件:require.context
    vue项目报错:$ is not defined
    状态合并:replaceState
    路由导航守卫中document.title = to.meta.title的作用
    vue路由中meta的作用
    BCryptPasswordEncoder加密与MD5加密
    滑块验证机制
  • 原文地址:https://www.cnblogs.com/cws-kf/p/8528937.html
Copyright © 2020-2023  润新知