Это моя версия для Swift 3 / Swift 4.
Объяснение того, что происходит в коде.
Это по существу тот же ответ, что и Sh_Khan's. Но в его примере пользователь уже знает путь к ведро. В моем примере мы получаем путь от задачи загрузки. Именно это и привело меня к этому вопросу, а также то, что, как мне кажется, искал, когда он искал замену metadata.downloadURL()
.
class StorageManagager {
private let storageReference: StorageReference
init() {
// first we create a reference to our storage
// replace the URL with your firebase URL
self.storageReference = Storage.storage().reference(forURL: "gs://MYAPP.appspot.com")
}
// MARK: - UPLOAD DATA
open func uploadData(_ data: Data, named filename: String, completion: @escaping (URL? , Error?) -> Void) {
let reference = self.storageReference.child(filename)
let metadata = StorageMetadata()
metadata.contentType = "ourType" // in my example this was "PDF"
// we create an upload task using our reference and upload the
// data using the metadata object
let uploadTask = reference.putData(data, metadata: metadata) { metadata, error in
// first we check if the error is nil
if let error = error {
completion(nil, error)
return
}
// then we check if the metadata and path exists
// if the error was nil, we expect the metadata and path to exist
// therefore if not, we return an error
guard let metadata = metadata, let path = metadata.path else {
completion(nil, NSError(domain: "core", code: 0, userInfo: [NSLocalizedDescriptionKey: "Unexpected error. Path is nil."]))
return
}
// now we get the download url using the path
// and the basic reference object (without child paths)
self.getDownloadURL(from: path, completion: completion)
}
// further we are able to use the uploadTask for example to
// to get the progress
}
// MARK: - GET DOWNLOAD URL
private func getDownloadURL(from path: String, completion: @escaping (URL?, Error?) -> Void) {
self.storageReference.child(path).downloadURL(completion: completion)
}
}
Вы можете увеличить до 4 ГБ на 32-битной системе. Если вы используете 64-битную систему, вы можете пойти выше. Не нужно беспокоиться, если вы выбрали неверно, если вы попросите 5g на 32-битной системе, java будет жаловаться на недопустимое значение и выйти.
Как и другие опубликованные, используйте флаги cmd-line - например
java -Xmx6g myprogram
В любом случае вы можете получить полный список (или почти полный список), набрав java -X.
Пожалуйста, используйте команду ниже для изменения размера кучи до 6 ГБ
export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
Можно увеличить размер кучи, выделенный JVM с помощью параметров командной строки. Здесь у нас есть 3 варианта
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
java -Xms16m -Xmx64m ClassName
. В приведенной выше строке мы можем установить минимальную кучу 16 мб и максимальную кучу 64mb
Это работает только с 64-разрядной версией Java. Перейдите в Панель управления и щелкните значок Java. В маленьком окне панели управления Java нажмите на панель меню Java, а затем нажмите кнопку view
.
Если у вас две платформы Java, отключите предыдущую версию Java, затем нажмите Параметры времени выполнения и запись -Xmx1024m
или меньше, чем размер ОЗУ. Не увеличивайте размер кучи, равный ОЗУ, иначе ваша система выйдет из строя.
Несколько человек указали конкретные ответы на размер кучи с параметрами jvm в -Xms
и -Xms
. Я хочу указать, что это не единственный тип параметров памяти для jvm. В частности, если вы получаете стеки через потоки, то вы захотите увеличить размер стека, добавив дополнительную опцию, например -Xss8m
.
Для этой проблемы варианты jvm чего-то вроде -Xms2g -Xmx6g -Xss8m
будут решением.
Я делюсь этой информацией, так как мои поисковые запросы Google о том, как увеличить память jvm, заставили меня к этому решению, и решения не работали с большим объемом выделения памяти. Как только я выяснил, для каких конкретных настроек, мне удалось Google, как увеличить размер стека и найти недостающий параметр. :) Надеюсь, это спасет время других, так как это спасло бы мне массу времени. :) [/ Д2]
В 32-битной JVM наибольший размер кучи, который вы теоретически можете установить, составляет 4gb. Чтобы использовать большой размер кучи, вам нужно использовать 64-битную JVM. Попробуйте следующее:
java -Xmx6144M -d64
blockquote>Флаг -d64 важен, так как это говорит о запуске JVM в 64-разрядном режиме.
Можно увеличить размер кучи, выделенный JVM в eclipse напрямую. В eclipse IDE goto
Run ----> Run Configurations ----> Аргументы
Введите -Xmx1g (Он используется для установки максимального размера, такого как Xmx256m или Xmx1g ...... m -> mb g ---> gb)
Вы можете увеличить размер кучи, передав параметры JVM -Xms и -Xmx, как показано ниже:
Для файлов Jar:
java -jar -Xms4096M -Xmx6144M jarFilePath.jar
Для файлов Java:
java -Xms4096M -Xmx6144M ClassName
Вышеуказанные параметры увеличивают значение InitialHeapSize (-Xms) до 4 ГБ (4096 МБ) и MaxHeapSize (-Xmx) до 6 ГБ (6144 МБ).
Но размер кучи молодого поколения останется таким же, и дополнительный кусок HeapSize будет добавлен в размер кучи старого поколения. Чтобы уравнять размер кучи Young Gen и кучи старого поколения, используйте -XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.
java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar
-XX: NewRatio = размер старого кучи: Young Gen HeapSize (Вы можете играть с этим коэффициентом, чтобы получить желаемое соотношение).
Да. Вы можете
Вы можете увеличить свою память кучи до 75% физической памяти (6 ГБ кучи) или выше.
Поскольку вы используете 64 бит, вы можете увеличить размер кучи на свой желаемая сумма. В случае, если вы используете 32-битный, он ограничен 4 ГБ.
$ java -Xms512m -Xmx6144m JavaApplication
Устанавливает исходный размер кучи до 512 МБ и максимальный уровень сжатия до 6 ГБ.
Надеюсь, что это поможет .. :)
Могу ли я увеличить память кучи до 75% физической памяти (куча 6 ГБ).
blockquote>Да, вы можете. Фактически, вы можете увеличить до большего объема физической памяти, если хотите.
Будет ли это хорошей идеей, это зависит от того, сколько еще работает в вашей системе. В частности, если «рабочий набор» приложений и служб, которые в настоящее время работают, значительно превышает доступную физическую память, ваша система может «трэш», проводя много времени, перемещая страницы виртуальной памяти на диск и с диска. Чистый эффект заключается в том, что система становится очень медленной.
java -d64 -Xms512m -Xmx4g HelloWorld
где, -d64: активирует 64-битный JVM -Xms512m: установит размер начальной кучи как 512 МБ -Xmx4g: установит максимальный размер кучи как 4 GB (здесь имя java-файла: HelloWorld.java)