首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术小黑屋

    Java永久去哪儿了

    在JDK8之后,永久被移除,原本存储在永久的数据将存放在一个叫做元空间的本地内存区域。 在JDK8之前的HotSpot虚拟机中,类的这些“永久的”数据存放在一个叫做永久的区域。 永久一段连续的内存空间,我们在JVM启动之前可以通过设置-XX:MaxPermSize的值来控制永久的大小,32位机器默认的永久的大小为64M,64位的机器则为85M。 辞永久,迎元空间 随着Java8的到来,我们再也见不到永久了。但是这并不意味着类的元数据信息也消失了。这些数据被移到了一个与堆不相连的本地内存区域,这个区域就是我们要提到的元空间。 这项改动是很有必要的,因为对永久进行调优是很困难的。永久中的元数据可能会随着每一次Full GC发生而进行移动。

    1K20发布于 2018-09-05
  • 来自专栏along的开发之旅

    Java8移除永久

    因为使用永久来实现方法区不是个好主意, 很容易遇到内存溢出的问题. 我们通常使用PermSize和MaxPermSize设置永久的大小, 这个大小就决定了永久的上限, 但是我们不是总是知道应该设置为多大的, 如果使用默认值容易遇到OOM错误. 其中 “JEP 122: Remove the Permanent Generation“说的就是移除永久. 文中说实现目标: 类的元数据, 字符串池, 类的静态变量将会从永久移除, 放入Java heap或者native memory. 减少OOM只是表因, 更深层的原因还是要合并HotSpot和JRockit的代码, JRockit从来没有一个叫永久的东西, 但是运行良好, 也不需要开发运维人员设置这么一个永久的大小.

    1.1K10发布于 2018-08-02
  • 来自专栏FREE SOLO

    元空间和永久的区别

    永久的垃圾收集是和老年代(old generation)捆绑在一起的,因此无论谁满了,都会触发永久和老年代的垃圾收集。 注:从JDK7开始永久的移除工作,贮存在永久的一部分数据已经转移到了Java Heap或者是Native Heap。 永久在JDK8中被完全的移除了。所以永久的参数-XX:PermSize和-XX:MaxPermSize也被移除了。 因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久转移到堆中,并且 JDK 1.8 中已经不存在永久的结论。 2、类及方法的信息等比较难确定其大小,因此对于永久的大小指定比较困难,太小容易出现永久溢出,太大则容易导致老年代溢出。 3、永久会为 GC 带来不必要的复杂度,并且回收效率偏低。

    6.3K10发布于 2019-04-18
  • 来自专栏山海散人技术

    深入JVM学习—永久

    永久的相关知识 ---- JDK1.8之后取消。 永久是在堆内存中保存的,但不会被回收,例如:intern()方法产生的对象不会被回收。 所以如果你的操作不当,导致永久中数据量过大,那么这个时候程序依然会抛出OOM异常。 设置永久的内存参数 ---- No. 参数名称 描述 01 -XX:PermSize 设置永久的初始大小 02 -XX:MaxPermSize 设置永久的最大值 3. 范例 ---- 1. 在JDK1.8之中设置永久会出现错误提示

    22410发布于 2021-03-03
  • 来自专栏王磊的博客

    为什么用元空间替代永久

    但从《Java 虚拟机规范》的层面来说,并没有所谓的“永久”和“元空间”等区域。 JRockit 客户不需要配置永久(因为 JRockit 没有永久),所以要移除永久永久”,所以把永久给移除了。 2.背后的原因 上述给出了移除永久的回答,但却没有给出背后的原因,那接下来我们就来讨论一下,为什么要移除永久?以及为什么要有元空间? 3.方法区发展史 在 HotSpot 虚拟机中,方法区的实现经历了以下 3 个阶段: JDK 1.6 及之前:方法区使用永久实现,静态变量存放在永久; JDK 1.7 :“去永久”的前置版本,还存在永久

    1.4K30编辑于 2023-02-16
  • 来自专栏服务端技术杂谈

    一次永久泄漏(perm泄漏)排查

    排查过程 登入机器,查看内存使用高的进程: top pid:15298 既然是perm区问题,查看永久情况: jmap -permstat pid > 15298dump.permstat class_loader package_name_count_dic[package_name] = 1 k = Counter(package_name_count_dic) high = k.most_common(5) 最近发版比较少,同时这些是扩容机器,在最近的几次发版中并没有发版,所以造成类加载持续一段时间,最后造成永久泄露。

    1.6K30发布于 2019-07-31
  • 来自专栏健程之道

    JVM 知识点补充——永久和元空间

    之前已经讲过了不少有关 JVM 的内容,今天准备将之前没有细讲的部分进行补充,比如:永久和元空间。 永久 Java 的内存中有一块称之为方法区的部分,在 JDK8 之前, Hotspot 虚拟机中的实现方式为永久(Permanent Generation),别的JVM都没有这个东西。 永久是一段连续的内存空间,我们在 JVM 启动之前可以通过设置-XX:MaxPermSize的值来控制永久的大小,32 位机器默认的永久的大小为 64M,64 位的机器则为 85M。 永久的垃圾回收和老年代的垃圾回收是绑定的,一旦其中一个区域被占满,这两个区都要进行垃圾回收。 元空间 元空间是 Hotspot 在 JDK8 中新加的内容,其本质和永久类似,都是对 JVM 规范中方法区的实现。不过元空间与永久之间最大的区别在于: 元空间并不在虚拟机中,而是使用本地内存。

    1K40发布于 2019-11-03
  • 来自专栏Java极客技术

    JDK为什么废弃永久,而引入元空间

    永久: 在jdk7以及jdk7之前,方法区被称为永久(PermGen) 此时永久是 Java 堆(Java Heap)的一部分,用于存储类信息、方法信息、常量池信息等静态数据。 在Java7时,仍然有永久永久也与堆中的老年代连续,但永久中存储的部分数据已经开始转移到Java Heap或Native Memory中了,比如: 符号引用(Symbols)转移到了Native 元空间和永久的不同点: 存储位置不同 为什么说存储位置不同呢? 永久在物理上是堆的一部分,和新生、老年代的地址是连续的,而元空间属于本地内存。 这时候我们就有了新的问题,为什么要废弃永久,而使用元空间来进行替换呢? 首先我们得知道,在原来的永久划分中,永久需要存放类的元数据、静态变量和常量等。 第二个原因则是移除永久是为融合HotSpot VM与 JRockit VM而做出的努力,因为JRockit没有永久,不需要配置永久

    1.2K30编辑于 2023-09-28
  • 来自专栏csdn

    Java 8为什么使用元空间替换永久

    Java 8为什么使用元空间替换永久? 一、永久的概念与问题 1.1 永久的定义 永久是JVM内存结构中的一个部分,专门用于存储Java类的元数据。元数据包括类的名称、方法、字段、常量池、方法字节码等。 1.2 永久的缺陷 永久的存在带来了一些问题,这些问题在大型Java应用程序中尤为明显: 固定大小的内存区域:永久是一个固定大小的内存区域,必须在JVM启动时通过参数-XX:PermSize和- 垃圾回收的复杂性:永久的垃圾回收机制较为复杂,尤其是在类卸载时,需要扫描整个永久以标记无用的类元数据。这种操作可能导致垃圾回收暂停时间增加,影响应用程序的性能。 永久的使用限制:由于永久的大小是固定的,在一些动态生成类的场景(如大量使用反射、动态代理、JSP编译等)中,永久可能会迅速耗尽,导致内存问题。

    66310编辑于 2024-08-05
  • 来自专栏朱永胜的私房菜

    方法区、永久、元空间之间有什么关系

    永久(PermGen) 永久是方法区的一种实现,它是在JVM中使用的一个术语,特别是在HotSpot虚拟机中。 在Java 8之前的版本中,HotSpot虚拟机使用永久来存储类的元数据和其他与类相关的结构。永久有一个固定的大小上限,可以通过JVM启动参数-XX:MaxPermSize进行设置。 一旦永久的空间不足,就会抛出OutOfMemoryError: PermGen space错误。 永久和元空间都是方法区的具体实现,但它们存在于不同的Java版本中: 「永久」:Java 8之前的HotSpot虚拟机实现。 主要区别在于: 「位置」:永久在JVM堆内存中,而元空间在本地内存中。 「大小限制」:永久有固定的大小限制,元空间的大小受本地内存限制。

    96010编辑于 2024-01-06
  • 来自专栏JavaNew

    Java8内存模型—永久(PermGen)和元空间(Metaspace)

    由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久的内存溢出。最典型的场景就是,在 jsp 页面比较多的情况,容易出现永久内存溢出。 三、Metaspace(元空间)   其实,移除永久的工作从JDK1.7就开始了。JDK1.7中,存储在永久的部分数据就已经转移到了Java Heap或者是 Native Heap。 因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久转移到堆中,并且 JDK 1.8 中已经不存在永久的结论。现在我们看看元空间到底是一个什么东西?    元空间的本质和永久类似,都是对JVM规范中方法区的实现。不过元空间与永久之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。 2、类及方法的信息等比较难确定其大小,因此对于永久的大小指定比较困难,太小容易出现永久溢出,太大则容易导致老年代溢出。   3、永久会为 GC 带来不必要的复杂度,并且回收效率偏低。   

    51400编辑于 2022-05-09
  • 来自专栏爪哇缪斯

    永久?元空间?

    ---- 【永久】(JDK8之前) -XX:PermSize 设置初始永久大小。 例如:-XX:PermSize=5m -XX:MaxPermSize 设置最大永久大小,默认情况下为64MB。 例如:-XX:MaxPermSize=5m 指内存的永久保存区域,主要存放Class和Meta(元数据)的信息,Class在被加载的时候被放入永久区域,它和存放实例的区域不同,GC不会在主程序运行期对永久区域进行清理 元空间的本质和永久类似,元空间与永久之间最大的区别在于:元空间并不在虚拟机中,而是使用堆外的直接内存。 因此,与永久不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存。 类及方法的信息等比较难确定其大小,因此对于永久的大小指定比较困难,太小容易出现永久溢出,太大则容易导致老年代溢出。永久会位GC带来不必要的复杂度,而且回收效率偏低。

    53610编辑于 2023-05-09
  • 来自专栏卯金刀GG

    【JAVA基础☞内部存储和GC】Java方法区和永久

    方法区和永久的关系很像Java中接口和类的关系,类实现了接口,而永久就是HotSpot虚拟机对虚拟机规范中方法区的一种实现方式。 对新生进行垃圾回收叫做minor GC,对老年代进行垃圾回收叫做major GC,同时对新生、老年代和永久进行垃圾回收叫做full GC。 所以,理论上系统可以使用的内存有多大,元空间就有多大,所以不会出现永久存在时的内存溢出问题。 这项改造也是有必要的,永久的调优是很困难的,虽然可以设置永久的大小,但是很难确定一个合适的大小,因为其中的影响因素很多,比如类数量的多少、常量数量的多少等。 永久中的元数据的位置也会随着一次full GC发生移动,比较消耗虚拟机性能。同时,HotSpot虚拟机的每种类型的垃圾回收器都需要特殊处理永久中的元数据。

    1.4K40发布于 2019-07-25
  • 来自专栏朱永胜的私房菜

    JDK1.8为什么使用元空间代替了永久

    JDK 1.8中元空间的引入 在JDK 1.8中,元空间(Metaspace)被引入作为替代永久(PermGen,Permanent Generation)的一部分内存模型的改变。 永久的限制 「永久」是Java堆的一部分,用于存储类的元数据、静态变量和JVM内部用于类和方法的数据结构。它有一个固定的大小,当应用程序加载了大量的类或者大量使用反射时,永久很容易发生溢出。 这样做的好处是元空间可以动态地根据应用程序的需求扩展大小,而不需要像永久那样设置一个固定的大小。这种方式更加灵活,可以减少因为永久大小不当设置导致的内存错误。 4. 性能优化 使用元空间代替永久还有助于性能优化。因为元空间是基于本地内存的,它的扩展通常比永久更快,且不受JVM堆大小的限制。这意味着元空间可以更快地响应类加载的需求。 5. 与HotSpot JVM的兼容性 Oracle希望通过引入元空间,简化HotSpot JVM的维护和开发,因为这样可以移除与永久相关的代码,使得JVM的内存管理更加简洁。

    73310编辑于 2024-01-06
  • 来自专栏Wooola的技术博客

    Java8内存模型—永久(PermGen)和元空间(Metaspace)

    由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久的内存溢出。最典型的场景就是,在 jsp 页面比较多的情况,容易出现永久内存溢出。 三、Metaspace(元空间)   其实,移除永久的工作从JDK1.7就开始了。JDK1.7中,存储在永久的部分数据就已经转移到了Java Heap或者是 Native Heap。 因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久转移到堆中,并且 JDK 1.8 中已经不存在永久的结论。现在我们看看元空间到底是一个什么东西?    元空间的本质和永久类似,都是对JVM规范中方法区的实现。不过元空间与永久之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。 2、类及方法的信息等比较难确定其大小,因此对于永久的大小指定比较困难,太小容易出现永久溢出,太大则容易导致老年代溢出。   3、永久会为 GC 带来不必要的复杂度,并且回收效率偏低。   

    70220发布于 2021-05-27
  • 来自专栏纯洁的微笑

    Java8内存模型—永久(PermGen)和元空间(Metaspace)

    由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久的内存溢出。最典型的场景就是,在 jsp 页面比较多的情况,容易出现永久内存溢出。 三、Metaspace(元空间) 其实,移除永久的工作从JDK1.7就开始了。JDK1.7中,存储在永久的部分数据就已经转移到了Java Heap或者是 Native Heap。 因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久转移到堆中,并且 JDK 1.8 中已经不存在永久的结论。现在我们看看元空间到底是一个什么东西? 元空间的本质和永久类似,都是对JVM规范中方法区的实现。不过元空间与永久之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。 类及方法的信息等比较难确定其大小,因此对于永久的大小指定比较困难,太小容易出现永久溢出,太大则容易导致老年代溢出。 永久会为 GC 带来不必要的复杂度,并且回收效率偏低。

    2.1K20发布于 2018-09-30
  • 来自专栏用户10616523的专栏

    socks5

    以下是 SOCKS5 代理的一些关键特点:连接支持:SOCKS5 代理可以支持多种网络协议,包括 HTTP、HTTPS、FTP、SMTP 等,不仅限于特定协议。 认证选项:SOCKS5 具有认证功能,可以要求客户端提供用户名和密码进行身份验证,从而增加安全性。防火墙穿透:使用 SOCKS5 代理可以绕过防火墙限制,访问被封锁或受限制的网站和服务。 UDP 支持:与 SOCKS4 相比,SOCKS5 还支持 UDP 流量的代理转发,可以用于某些应用程序依赖于 UDP 的情况。 加密选项:尽管 SOCKS5 本身不提供加密功能,但可以通过与其他安全协议(如 TLS)结合使用,以实现加密传输。 使用 SOCKS5 代理可以带来一些好处,包括隐藏真实 IP 地址、访问地理位置限制的内容和服务、增加网络安全性等。

    79400编辑于 2023-06-15
  • 来自专栏用户10616523的专栏

    探索SK5理和SOCKS5理的好处

    理解SK5理和SOCKS5理的基本概念:介绍SK5理和SOCKS5理的定义和原理。解释它们如何在网络通信中起作用,以提供更高的隐私和安全性。 加密和隐私保护:探讨SK5理和SOCKS5理如何通过加密传输和数据隧道来保护网络通信的隐私性。说明使用SK5理和SOCKS5理可以有效防止中间人攻击和窥探。 绕过地理限制:分享如何使用SK5理和SOCKS5理绕过地理限制,访问被限制的内容或服务。提供具体的设置和配置示例,以便读者可以立即尝试并受益于这些代理技术。 高效的网络性能:讨论SK5理和SOCKS5理在网络性能方面的优势和提升。提供最佳实践和建议,以确保代理设置不会降低网络连接的速度和稳定性。 实际应用案例和最佳实践:分享使用SK5理和SOCKS5理的实际应用案例,如网络爬虫、匿名浏览等。探讨在特定情况下的最佳实践,以确保使用代理技术时的最佳性能和安全性。

    58820编辑于 2023-07-07
  • 来自专栏编程社区

    python sock5

    2022/3/25 16:27 ''' import socket import requests import socks socks.set_default_proxy(socks.SOCKS5, /usr/bin/python # -*- coding: UTF-8 -*- import requests import socket import socks SOCKS5_PROXY_HOST = 'xxxx' # socks 代理IP地址 SOCKS5_PROXY_PORT = xxx # socks 代理本地端口 default_socket = socket.socket socks.set_default_proxy(socks.SOCKS5, SOCKS5_PROXY_HOST, SOCKS5_PROXY_PORT) socket.socket = socks.socksocket session = requests.session() session.keep_alive = False res=session.get("http://ipconfig.cc/",timeout=5)

    95810编辑于 2022-03-31
  • 来自专栏python前行者

    python socks5

    537.36 (KHTML, like Gecko) ' 'Chrome/56.0.2924.87 Safari/537.36'} proxies = {'http': 'socks5: //127.0.0.1:1080','https':'socks5://127.0.0.1:1080'} url = 'https://www.facebook.com' response = requests.get

    2K31发布于 2019-03-25
领券